原图地址:https://zhuanlan.zhihu.com/p/72653360
离屏渲染
为什么尽量避免离屏渲染?
多开辟了临时的内存空间。
可能造成卡顿,上下文切换比较耗性能,如果GPU耗时过多,就可能会造成卡顿。
为什么需要离屏渲染
有时可以优化性能。
CALayer的shouldRasterize属性可以强制离屏渲染。
Rasterization会使用GPU将多个Layer绘制到一个image(Texture)中,并且这个image是会缓存的,以便后续直接使用缓存进行渲染。
设置圆角是否肯定导致离屏渲染?
UIImageView设置图片不会触发离屏渲染
UIView设置了背景颜色,但不添加subview,不会触发离屏渲染
UILabel设置了文字,并且设置了backgroundColor,会触发离屏渲染
UIButton只设置文字和背景,会触发离屏渲染
发生离屏渲染的情况
- 毛玻璃效果
- 光栅化
- 阴影(如果设置了shadowPath,不会触发离屏渲染)
- 抗锯齿