【发布时间】:2019-07-02 10:00:45
【问题描述】:
我有一个带有几个标签的单元格。其中一个标签是针对问题的。我的应用程序有不同长度的不同问题。所以我需要我的标签有一个动态的高度。我想通过自动布局来实现这一点。当我使用当前的自动布局运行我的应用程序时,它不会改变高度(参见图片)。我不确定我做错了什么。我已将标签的行数更改为0并添加了:
tableView.estimatedRowHeight = tableView.rowHeight
tableView.rowHeight = UITableView.automaticDimension
和
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return UITableView.automaticDimension
}
到我的 viewDidLoad(),但它不会改变我标签的高度。奇怪的是,当视图更改为另一个视图时,它会改变高度。查看 Youtube 链接以了解我在说什么:Youtube video。将视频的速度更改为最慢以查看最佳效果。它发生在视频的 0:04 秒左右。
设备上的标签:
Autor 标签约束:
横幅视图约束:
【问题讨论】:
-
您是否尝试仅添加标签并调试哪个视图正在破坏调整大小?
-
是的,我有!当我删除除有问题的标签之外的每个标签时,它仍然不会改变标签的高度,直到视图发生变化。
-
设置标签
numberOfLines = 0并且不要使用任何静态高度限制。设置tableView的动态rowHeight ->tableView.estimatedRowHeight = 44 // whatever you wanttableView.rowHeight = UTableView.automaticDimension. -
数据加载完成后,您可以执行
tableView.beginUpdates()和tableView.endUpdates() -
我认为您的其他组件压缩了您的问题标签。在您的单元格中使用垂直 stackView。不要使用任何静态高度约束。并使用我之前的 cmets 中提到的技术。
标签: ios swift uitableview autolayout label