0

例如,tableView 中有 100 行,在heightForRowAtIndexPath:显示第 100 行之前已经执行。

为什么?为了计算contentSizetableView?

谢谢!

4

1 回答 1

3

来自苹果的文档

每次显示表视图时,它都会在其每一行的委托上调用 tableView:heightForRowAtIndexPath:

所以是的,它在显示单元格之前被调用。如果您考虑一下,如果表格反过来,它将创建一个具有标准高度的单元格,将内容放入其中,获取实际高度,然后调整单元格的大小/移动。那不是很好。

这可能会导致性能问题,因此只有在具有不同高度的单元格时才应使用它:

该方法允许委托指定具有不同高度的行。如果实现了此方法,它返回的值将覆盖为给定行的 UITableView 的 rowHeight 属性指定的值。

使用tableView:heightForRowAtIndexPath:而不是 rowHeight 属性会影响性能。每次显示表视图时,它tableView:heightForRowAtIndexPath:都会为其每一行调用委托,这可能会导致表视图具有大量行(大约 1000 或更多)时出现严重的性能问题。

否则,如果所有单元格的高度相同,请使用该rowHeight属性,并且不要实现tableView:heightForRowAtIndexPath:.

于 2012-09-04T11:49:13.430 回答