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