九 CoreAnimation 渲染
2020-08-05 本文已影响0人
王俏
1. 职责
每个视图对象都有一个Core Animation对象,它是一个CALayer类实例,Core Animation是一个复合引擎,主要职责是进行布局,渲染和实现动画。
Core Animation 通过OpenGL/Metal驱动GPU完成渲染。
iOS下,UIKit在Core Animation上提供了一个透明的接口层,开发者大多数情况下不用直接访问Core Animation层,而通过UIView的方法和属性可以实现类似的行为。
2. Core Animation渲染流水线
在 Application 中布局 UIKit 视图控件间接的关联 Core Animation 图层
-
Commit Transaction 之前会经过以下处理:
Layout层 会构建视图addSubview和layoutSubviews
Display层 绘制视图drawRect,设置iOS设备要最终成像的图元数据
Prepare 额外的 Core Animation 工作,一般处理图像的解码 & 转换等操作
Commt,打包图层并将它们发送到 Render Server -
Commit Transaction之后,图元数据就将会在下一次 RunLoop 时被 Application 发送给底层的iOS Render Server,即 OpenGL ES & Metal
-
底层Render Server 经过一些列的数据处理将处理完毕的数据传递给GPU
-
然后 GPU 负责渲染,最终在当前 iOS 设备的显示屏中呈现图像。
@图转自博客文章: http://chuquan.me/2018/09/25/ios-graphics-render-principle