单元格中的标签高度不会动态改变高度
Posted
技术标签:
【中文标题】单元格中的标签高度不会动态改变高度【英文标题】:Label height in Cell won't change height dynamically 【发布时间】: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 want
tableView.rowHeight = UTableView.automaticDimension
.
数据加载完成后,您可以执行tableView.beginUpdates()
和tableView.endUpdates()
我认为您的其他组件压缩了您的问题标签。在您的单元格中使用垂直 stackView。不要使用任何静态高度约束。并使用我之前的 cmets 中提到的技术。
【参考方案1】:
最初tableViewCell
取height
根据label's
text
即Loading...
一旦收到来自Firebase
的Questions
响应,为了反映tableViewCell's
content
及其height
的变化,您需要重新加载整个tableView
,即
tableView.reloadData()
在收到API 响应并更新您用于tableView
的dataSource
后调用上述代码。
【讨论】:
【参考方案2】:添加与该调整大小标签的超级视图相关的所有约束。 也可以使用
label.numberOfLines = 0
label.lineBreakMode = .ByWordWrapping
【讨论】:
不起作用..它仍然不会改变标签的高度,直到视图改变! 使用 tableView.estimatedRowHeight = 100(或任何常量)肯定会起作用 您是否针对该特定标签的内容视图添加了所有约束? 是的,我已经添加了与标签内容视图相关的所有约束。 也添加这个 textLabel.lineBreakMode = .ByWordWrapping以上是关于单元格中的标签高度不会动态改变高度的主要内容,如果未能解决你的问题,请参考以下文章