【问题标题】:Swift - cell table view with a horizontal stack view inside contains different texts - automatic heightSwift - 内部具有水平堆栈视图的单元格表视图包含不同的文本 - 自动高度
【发布时间】:2018-12-23 17:22:15
【问题描述】:

我正在用 swift 为 iOS 应用程序编程,但我遇到了表格视图的问题。该表的单元格内部有一个水平 stackView,其中包含三个包含不同长度文本的标签。我已经设置了所有约束,并且似乎可以自动调整单元格的高度,但我意识到了一些事情:它会根据最短的高度自动调整单元格的高度。因此,它会截断较长的一个,如您在图像中看到的那样。请帮助我不知道如何解决它,我在网上找不到解决方案。

如何根据单元格组件高度设置单元格高度。 image problem: at verse 8 it truncate according the shortest one.

【问题讨论】:

  • 你对 lbls 有什么限制? ,你能分享一个演示吗??
  • 一种可能的方法是在视图控制器中声明标签。在计算UITableCell 高度的方法中,通过将这些文本设置为标签来计算3 个文本块的高度。然后返回您获得的最大高度。如果您不知道如何计算 UILabel 或某些 UI 元素的动态 CGSize,请阅读 sizeToFit()sizeThatFit(_:) 方法。
  • 将所有标签的抗压性设置为高于stackview底部约束的优先级。

标签: ios swift uitableview uistackview


【解决方案1】:

Auto LayoutHorizontal StackView 中的UITableViewCell。即,将前导、顶部、尾部和底部约束添加到单元格ContentView。在IdentityInspector或代码中将所有UILabels中的numberOfLines设置为0。

yourLabel.numberOfLines = 0

添加以下UITableView Delegate 方法来配置单元格高度。

func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
    return 200
}

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    return UITableViewAutomaticDimension
}

它会自动将所有单元格调整为所需的高度,这是三个标签中的最大高度,以显示每个标签中的整个文本。

使用sizeToFit() 调整标签的垂直对齐方式。使文本与左上角垂直对齐(这显然是通过修改标签框架来完成的 - 缩小标签以包含文本)。

cell.labelOne.sizeToFit()
cell.labelTwo.sizeToFit()
cell.labelThree.sizeToFit()
cell.layoutIfNeeded()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-24
    • 2018-05-06
    相关资源
    最近更新 更多