- (CGFloat)tableView:(UITableView *)tableView
estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath
这个方法是iOS7之后增加的,作用就是优化UITableView的性能,确切的说就是减少UITableView加载时的时间。
原理:
这个方法之所以能起到优化作用原因在于
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
这个方法在UITableView加载时,会多次大量的调用。如果UITableView中有100个cell的话,那么加载时这个方法至少需要调用100次。但是我们实际应用中,往往cell的高度一个可变的值需要经过计算才能得出。但是,如果你实现了estimatedHeightForRowAtIndexPath,那么在加载时就会掉用estimatedHeightForRowAtIndexPath而不是heightForRowAtIndexPath.estimatedHeightForRowAtIndexPath顾名思义,就是只要告诉一个预估值就可以了,不是要球最终的结果。所以我们可以在estimatedHeightForRowAtIndexPath中直接返回一个固定值,就可以了(这样不需要经过计算,最省时间)。
需要注意的是当真正显示cell的时候,需要精确的cell高度,所以就掉用heightForRowAtIndexPath。
所以
- (CGFloat)tableView:(UITableView *)tableView
estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath