一)调用有两处
1)此代理方法每次reload都会调用,调用次数就是数据源给出的cell的个数.目的是算出contentsize.height 这样给出精确的滚动条
2)每次有新的cell进入,都会再次调用此cell的heigtforRow,目的是算出本cell的高度
所以,在此方法计算cell的frame 效率比较低,因为会重复调用,重复计算.
二)性能优化:
1)self.tableView.estimatedRowHeight = 44;
2)- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return 44;
}
这是预算高,得到的滚动条不精确,reload的时候哪怕有100条数据 也只有几次到十几次(与返回值(44)有关系,越大调用次数越少,不过也不能太大,太大滚动条误差太大,会发生跳跃) .
哪些cell要显示,会调用cellForRow 得到真实高度.