具有动态高度的 UITableView 和 UITableViewCell 仅在 WillDisplay 中知道

Posted

技术标签:

【中文标题】具有动态高度的 UITableView 和 UITableViewCell 仅在 WillDisplay 中知道【英文标题】:UITableView and UITableViewCell with dynamic height which is known only at WillDisplay 【发布时间】:2016-06-02 02:41:59 【问题描述】:

我有一个UITableView,其单元格内容的高度可变。如果适用于自动布局的内容,但在我的情况下,只有在显示单元格(回收、重用等)时才会加载内容(绑定到 UI),所以我唯一能知道真实UITableViewCell 高度的机会是willDisplay我的表数据源。

那时我已经错过了EstimatedHeightGetHeightForRow 阶段。

请告知,我如何在WillDisplay 舞台上更改UITableViewCell 高度

【问题讨论】:

【参考方案1】:

如果您设置了 AutoLayout 正确,并且单元格应该计算自己的高度,那么无论何时何地您都会更改其内容/内容高度,它会知道适应。 检查单元格内容的顶部是否对单元格 ContentView 的顶部有约束,对于底部也是如此。

EstimatedHeight 顾名思义,只是一个估计值。这意味着您应该有一些尝试计算 dataSource 模型对象高度的实现,这只是一个基本实现。

或者您可以运行一次应用程序,并在它使用 AutoLayout 计算高度后继续查看单元格高度是多少,但这要少得多“动态”。

如果一个单元格在它已经设置之后改变了它的高度,你可以调用:

[tableView beginUpdates];
[tableView endUpdates];

并且单元格会自行重新计算,而不是重新加载孔tableView。

【讨论】:

以上是关于具有动态高度的 UITableView 和 UITableViewCell 仅在 WillDisplay 中知道的主要内容,如果未能解决你的问题,请参考以下文章

具有动态高度的 UITableView 和 UITableViewCell 仅在 WillDisplay 中知道

具有 3 个自定义视图和动态高度的 UITableView

具有动态单元格高度的 UITableView

具有动态高度的 UITableViewCell 内的 UITableView

实现 UITableView (Slave) 的动态高度,它作为子视图添加到另一个具有动态高度的 UITableView (Master) 的自定义单元格中

具有动态单元格高度的 UITableView 的 reloadData() 导致跳跃滚动