1 - 基础概念
什么是核心动画,做什么用的
Core Animation是一个复合引擎,它的职责就是尽可能快地组合屏幕上不同的可视内容,这个内容是
被分解成独立的图层,存储在一个叫做图层树的体系之中。于是这个树形成了UIKit以及在iOS应用程序当
中你所能在屏幕上看见的一切的基础。
视图与图层的关系
图层才是真正用来在屏幕上显示和做动画, UIView 是对它的一个封装,提供了一些iOS类似于处理触摸的具体功能,以及Core Animation底层方法的高级接口。
为什么iOS要基于 UIView 和 CALayer 提供两个平行的层级关系,为什么不用一个简单的层级来处理所有事情呢?
原因在于要做职责分离,这样也能避免很多重复代码。在iOS和Mac OS两个平台上,事件和用户交互有很多地方的不同, 基于多点触控的用户界面和基于鼠标键盘有着本质的区别,
这就是为什么iOS有 UIKit和 UIView ,但是Mac OS有AppKit和 NSView 的原因。他们功能上很相似,但是在实现上有着显著的区别。
绘图,布局和动画,相比之下就是类似Mac笔记本和桌面系列一样应用于iPhone 和iPad触屏的概念。把这种功能的逻辑分开并应用到独立的Core Animation框架,
苹果就能够在iOS和Mac OS之间共享代码,使得对苹果自己的OS开发团队和第三方开发者去开发两个平台的应用更加便捷。
那么CALayer有哪些UIView不具备的功能,需要深入到CALayer层
阴影,圆角,带颜色的边框
3D变换
非矩形范围
透明遮罩
多级非线性动画