说到UITableView优化,大家第一反应肯定是缓存池机制,在这我就不介绍缓存池机制了,主要说优化的事情
1. 在这想问问tableView的数据源方法都有那些?代理方法都有哪些?
很简单,凡是返回cell、heard或footer 都是数据源方法
高度什么的都是代理方法
2.tableview这些方法的执行顺序?
首先,tableview继承scrollview,那么首先要知道scrollview的contentsize,其次才是cell内容。显然易见,heightforrow 比cellforrow执行顺序高,不信的可以跑一遍试试。
3.假如我现在有100个cell,每个cell的高度不同,那么参考2就是先算出每个cell的高度,然后在去设置每个cell的子视图的位置以及大小,这样就会跑了200次,高度100次,cell内容100次,是不是有点2啊?如何解决呢?
假设一下,我们能不能让heightforrow方法只负责计算高度呢?让cellforrow只负责给cell的model赋值呢?
当然可以,具体做法就是分离heightforrow和cellforrow
4.tableview优化2----异步绘制
dispatch_async({
绘制cell里面的内容
});
总结一下:优化从这3方面入手
1.cell的高度
2.异步绘制
3.按需加载
离屏加载,也是tableview优化的一大特性,在使用tableview的时候尽量避免以下属性设置,
1.圆角 可以使用贝塞尔曲线代替,可以使用透明圆角图片代替,可以使用caShapelayer代替.
2.阴影
3.偏移量
4.抗锯齿,等等
5.透明度