CoreAnimation 渲染

385 阅读1分钟

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 设备的显示屏中呈现图像。

@图转自博客文章: chuquan.me/2018/09/25/…