estimatedRowHeight
为什么要引入estimatedRowHeight
呢?顾名思义就是预估高度。在预估高度之前,与高度相关的属性及方法比较常用的有以下两个:
* rowHeight
:这个属性适合用于拥有固定高度的tableview
,这种方式比较高效,滚动时没有任何高度计算,可以得到较好的滚动体验。
* tableview:heightForRowAtIndexPath:
这种方式适用于tableview
需要根据不同的内容展示不同高度的cell
,在该方法中计算得出cell
高度。但是这种方式的缺点也很明显,即使你有20,000行的cell,系统也会在tableview加载的时候提前获取所有cell的高度。延长了tableview
的加载时间。
文档中对estimatedRowHeight
的解释是这样的:提供一个非负的预估行高可以提高tableview的加载速度。如果一个tableview中包含可变的行高,当tableview加载数据时,会去计算所有的行高,这个代价是很大的。使用预估高度的话,你就可以将一些计算工作从加载时间推迟到滚动时间。
我们都知道,创建一个UIScrollView
,需要设置它的contentSize
,才可以正确的显示,tableview
也一样,tableview在创建了之后,需要知道即将展示在tableview
中展示的数据个数以及每条数据内容决定的cell