离屏渲染概念:
GPU渲染时,无法将数据一次写入帧缓冲framebuffer(与屏幕像素同数据量的数据区),需要开辟一块临时内存进行渲染最后写入到framebuffer中。
常见触发离屏渲染场景有:
- 使用阴影
- 抗锯齿
- 光栅化(当位图暂存起来)
- 使用不透明图层
- 使用圆角,并操作content
比如
UIImageView
无content 图片时,不会产生离屏渲染。 UILabel设置圆角不是针对其content,也不会产生离屏渲染。
优化:
- 使用
shadowpath
- 使用
bezierPath
圆角曲线 - 使用mask遮罩做圆角处理(遮罩白色区域为需要遮挡的部分),性能最好
alpha=1