首页 > 解决方案 > Swift - 内部具有水平堆栈视图的单元格表视图包含不同的文本 - 自动高度

问题描述

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

如何根据单元格组件高度设置单元格高度。 图像问题:在第 8 节它根据最短的一个截断。

标签: iosswiftuitableviewuistackview

解决方案


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

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()

推荐阅读