渲染又分为离屏渲染与在屏渲染
·On-Screen Rendering
意为当前屏幕渲染,指的是GPU的渲染操作是在当前用于屏幕缓冲区进行的
·Off-Screen Rendering
意为离屏渲染,指的是GPU在当前屏幕缓冲区以外开辟一个缓冲区进行渲染操作
·何时触发离屏渲染
·圆角(当和maskToBounds=YES一起使用时)
·遮罩
·阴影
·光栅化
·为何要避免
因为会触发 GPU 多通道渲染管线产生了额外的开销,会增加 GPU 的工作量,很有可能导致 CPU 和 GPU 工作耗时加起来的总耗时超出了16.7ms(1秒60FPS,1000/60)导致 UI的卡顿和掉帧,所以我们要避免离屏渲染。
总结
当我们设置一些 UIView 的图层属性,标记位于合成之前,不能用于直接显示的时候。那么就触发了离屏渲染。典型的如圆角属性包括一些蒙层遮罩。 离屏渲染起源于 GPU 层面,指的是 GPU 新开辟的一块缓冲区进行渲染操作。