tableview性能优化的一些小点

1. Cell重用

2. 定义一种(尽量少)类型的Cell及善用hidden隐藏(显示)subviews

3. 提前计算并缓存Cell的高度

4.异步绘制(自定义Cell绘制)

5.滑动时,按需加载

6.缓存View

当Cell中的部分View是非常独立的,并且不便于重用的,而且“体积”非常小,在内存可控的前提下,我们完全可以将这些view缓存起来。当然也是缓存在模型中。

7.避免大量的图片缩放、颜色渐变等,尽量显示“大小刚好合适的图片资源”

8.避免同步的从网络、文件获取数据,Cell内实现的内容来自web,使用异步加载,缓存请求结果

9.渲染

   9.1>减少subviews的个数和层级

      子控件的层级越深,渲染到屏幕上所需要的计算量就越大;如多用异步drawRect绘制元素,替代用view显示

   9.2>少用subviews的透明图层

      对于不透明的View,设置opaque为YES,这样在绘制该View时,就不需要考虑被View覆盖的其他内容(尽量设置Cell的view为opaque,避免GPU对Cell下面的内容也进行绘制)

   9.3>避免CALayer特效(shadowPath)

      给Cell中View加阴影会引起性能问题,如下面代码会导致滚动时有明显的卡顿:

view.layer.shadowColor= color.CGColor;

view.layer.shadowOffset= offset;

view.layer.shadowOpacity=1;

view.layer.shadowRadius= radius;


总结:UITableView的优化主要从三个方面入手:

提前计算并缓存好高度(布局),因为heightForRowAtIndexPath:是调用最频繁的方法;(这个是开发中肯定会要优化的,不可能一个app就几个Cell吧)

滑动时按需加载,防止卡顿,这个我也认为是很有必要做的性能优化,配合SDWebImage

异步绘制,遇到复杂界面,遇到性能瓶颈时,可能就是突破口(如题,遇到复杂的界面,可以从这入手)

缓存一切可以缓存的,这个在开发的时候,往往是性能优化最多的方向

你可能感兴趣的:(tableview性能优化的一些小点)