一、原因:
1、cell中需要加载图片及设置成圆角(layer.masksToBounds=YES)产生离屏渲染;
2、cell的重新布局;
3、cell的高度不确定;
4、cell中的控件的数量;
5、全局更新TableView;
6、使用了clearcolor,无背景色,透明度为0;
7、使用addView给cell动态的添加View;
8、实现了无用的代理方法;
9、做了多余的绘制工作;
10、没有预渲染图像。
二、解决方案:
1、加载网络图片使用异步加载,并缓存;尽量不要设置圆角,采用带圆角的图片;
2、cell的布局填充操作比较耗时,一般创建好久布局好;
3、提前计算cell的高度并缓存cell的属性;
4、尽量使cell的布局大致相同,不同风格的cell采用不同的重用标识符,初始化添加控件,不适用的先隐藏;
5、可以采用局部更新cell的内容;
6、因为渲染耗时较长,尽量使用颜色设置;
7、自定义cell,预先布局好cell的子视图;
8、实现一些必要用到的代理方法;
9、在实现drawRect:的时候,它的rect参数就是需要绘制的区域,这个区域之外的不需要进行绘制。例如可以用CGRectIntersectsRect、CGRectIntersection或CGRectContainsRect判断是否需要绘制image和text,然后再调用绘制方法。
10、在bitmap context里先将其画一遍,导出成UIImage对象,然后再绘制到屏幕。