具有动态高度的 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
我的表数据源。
那时我已经错过了EstimatedHeight
和GetHeightForRow
阶段。
请告知,我如何在WillDisplay
舞台上更改UITableViewCell
高度
【问题讨论】:
【参考方案1】:如果您设置了 AutoLayout 正确,并且单元格应该计算自己的高度,那么无论何时何地您都会更改其内容/内容高度,它会知道适应。 检查单元格内容的顶部是否对单元格 ContentView 的顶部有约束,对于底部也是如此。
EstimatedHeight 顾名思义,只是一个估计值。这意味着您应该有一些尝试计算 dataSource 模型对象高度的实现,这只是一个基本实现。
或者您可以运行一次应用程序,并在它使用 AutoLayout 计算高度后继续查看单元格高度是多少,但这要少得多“动态”。
如果一个单元格在它已经设置之后改变了它的高度,你可以调用:
[tableView beginUpdates];
[tableView endUpdates];
并且单元格会自行重新计算,而不是重新加载孔tableView。
【讨论】:
以上是关于具有动态高度的 UITableView 和 UITableViewCell 仅在 WillDisplay 中知道的主要内容,如果未能解决你的问题,请参考以下文章
具有动态高度的 UITableView 和 UITableViewCell 仅在 WillDisplay 中知道
具有动态高度的 UITableViewCell 内的 UITableView
实现 UITableView (Slave) 的动态高度,它作为子视图添加到另一个具有动态高度的 UITableView (Master) 的自定义单元格中