tableView自动计算行高:(需要设置两个属性:rowHeight和estimatedRowHeight)
注意:
执行这个方法时不会调用行高方法
[tableView dequeueReusableCellWithIdentifier:()]
执行这个方法时会调用行高方法
[tableView dequeueReusableCellWithIdentifier:() forIndexPath:()]
——设置了预估行高
执行顺序:行数—>每个[cell —> 行高](注:即返回每个cell—>每个cell的行高)
当前显示的行高方法会调用三次(每个版本的Xcode调用次数可能不同)
** 问题:预估行高如果不同,计算的次数不同!
1.使用预估行高,计算出预估的contentSize
2.根据预估行高,判断计算次数,顺序计算每一行的行高,更新contentSize
3.如果预估行高过大,超出预估行高范围,顺序计算后续行高,一直到填满屏幕退出,同时更新contentSize
4.使用预估行高,每个cell显示前需要计算,单个cell的效率是低的,从整体效率是高的
特别注意:预估行高不要太大,也不要太小,尽量靠近!!!
——没有设置预估行高
执行顺序:行数 —> 行高 —> cell
1.计算所有行的高度
2.再计算显示行的高度
** 问题:为什么要调用所有行高的方法?UITableView继承自UIScrollView
表格视图滚动非常流畅—>需要提前计算出contentSize
设置预估行高的两个属性:
特别注意:这两个属性都要设置才能达到效果
self.tableView.rowHeight =UITableViewAutomaticDimension; // 行高
self.tableView.estimatedRowHeight = 20; // 预估行高