单元格中的标签高度不会动态改变高度

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】:

最初tableViewCellheight 根据label's textLoading...

一旦收到来自FirebaseQuestions 响应,为了反映tableViewCell's content 及其height 的变化,您需要重新加载整个tableView,即

tableView.reloadData()

在收到API 响应并更新您用于tableViewdataSource 后调用上述代码。

【讨论】:

【参考方案2】:

添加与该调整大小标签的超级视图相关的所有约束。 也可以使用

label.numberOfLines = 0
label.lineBreakMode = .ByWordWrapping 

【讨论】:

不起作用..它仍然不会改变标签的高度,直到视图改变! 使用 tableView.estimatedRowHeight = 100(或任何常量)肯定会起作用 您是否针对该特定标签的内容视图添加了所有约束? 是的,我已经添加了与标签内容视图相关的所有约束。 也添加这个 textLabel.lineBreakMode = .ByWordWrapping

以上是关于单元格中的标签高度不会动态改变高度的主要内容,如果未能解决你的问题,请参考以下文章

单元格标签中的最后一行不会出现自动布局和动态单元格高度

根据单元格OBjective-C中的标签文本(动态)增加单元格高度

Swift动态表格单元格高度[重复]

具有固定高度的表格单元格中的自动布局多行标签

根据标签文本动态改变单元格高度

动态单元格高度的自动布局约束