Core Animation是从CALayer Kit这个名词演变而来,动画只是其功能特性的一部分。其职责就是尽可能快的组合屏幕上的可视内容,这个内容是被分解成独立的图层存储在一个叫做图层树的体系之中。这个树形成了屏幕上可见的一切的基础。
图层与视图
所有的视图都是从UIView派生的,可以处理触摸事件,可以基于Core Graphics绘图,可以做仿射变换。
CALayer和UIView类似,同样被层级关系树管理,同样可以包含内容,管理子图层位置,可以做动画和变换。他们最大的不同是CALayer不必处理用户交互,虽然CALayer提供了方法判断触摸点是否在图层范围内。
每一个UIView都有一个CALayer实例的属性,视图的职责就是创建并管理这个图层,以确保当子视图在层级关系中被添加或移除的时候,他们关联的图层在对应的层级关系中有相同的操作。
CALayer和UIView职责分离,可以避免很多重复代码,以便macOS和iOS复用。iOS和macOS上的事件交互有很多不同的地方,基于多点触控和鼠标点击有着本质的区别。
除了视图层级和layer层级之外,还有呈现树和渲染树。
图层具备而视图不具备的能力:
1. 阴影、圆角、带颜色的边框
2. 3D变换
3. 非矩形范围
4. 透明遮罩
5. 多级非线形动画