什么是离屏渲染?
是在GPU当前缓冲区之外创建一个新的缓冲区进行渲染操作。
创建缓冲区,上下文在离屏缓冲区和当前缓冲区之间切换都需要耗费性能。
触发操作
1、UIButton圆角设置,UIImageView在使用png的情况下设置圆角不会触发,设置阴影操作也会触发。
2、layer一些属性的设置,如:layer.mask,layer.maskToBounds等。
3、所有的文本操作,如:UILabel,CoreText等。
4、使用CGContext的drowRect方法。
优化方法
常用设置会触发离屏渲染,创建新的缓冲区,上下文需要在新旧缓冲区之间切换,比较耗性能,
圆角优化:
1、用贝塞尔曲线绘制圆角
2、使用UIBezierPath和CAShapLayer
使用UIBezierPath和CAShapLayer不需要在view的drawRect方法中绘制,使用drowRect消耗的CPU性能较大。
CAShapLayer渲染直接在GPU中进行,相比较drawRect在CPU中
阴影优化
网友评论