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

时间:2016-06-02 02:42:00

标签: ios uitableview autolayout row-height

我有一个UITableView,其单元格内容可变高度。如果适用于自动覆盖的内容,但在我的情况下,仅在显示单元格(回收,重用等)时才加载(绑定到UI)内容,因此我唯一可以知道真实UITableViewCell高度的机会是{我的表dataSource的{1}}。

此时我已经错过了willDisplayEstimatedHeight个阶段。

请告知我如何在GetHeightForRow阶段更改UITableViewCell身高

1 个答案:

答案 0 :(得分:1)

如果你将AutoLayout设置为正确,并且单元格应该计算它自己的高度,那么何时改变它的内容/内容高度并不重要,它将知道要适应。 检查单元格内容的顶部是否有对单元格ContentView顶部的约束,以及底部的约束。

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

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

如果单元格在其已设置后更改其高度,则可以调用:

[tableView beginUpdates];
[tableView endUpdates];

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