-
uiview 和 layer的区别
uiview 提供内容,负责触摸事件,参与响应链
CALayer 负责显示contents -
如何优化
CPU -
对象创建 调整销毁
-
预先 布局计算 文本计算
-
预渲染 (文本绘制,图片解码)
GPU -
离屏渲染 纹理渲染
-
视图混合
-
异步绘制
异步绘制
layer.delegate displayLayer
子线程代理生成对应bitmap(core grap方法),主线程layer.cnotext=bitmap, -
离屏渲染
离屏渲染原因:https://zhuanlan.zhihu.com/p/72653360 对于每一层layer,要么能找到一种通过单次遍历就能完成渲染的算法,要么就不得不另开一块内存,借助这个临时中转区域来完成一些更复杂的、多次的修改/剪裁操作。
在屏渲染,GPU在当前屏幕缓冲区
离屏渲染,GPU在当前缓冲区外新开辟一个缓冲区 -
圆角 & masktoBounds
-
图层蒙版
-
阴影
-
光栅化
问题: -
增加GPU工作量,掉帧
-
新缓冲区,内存开销
-
上下文切换
网友评论