Core Animation
众所周知,绚丽动画效果是iOS系统的一大特点,通过UIView层封装的动画,基本可以满足我们应用开发的所有需求,但若需要更加自由的控制动画的展示,我们就需要使用CoreAnimation框架中的一些类与方法
Core Animation基础知识
Core Animation是iOS和OS X上图形渲染和动画的基础结构,可用于为视图和应用程序的其他可视元素设置动画。Core Animation的实现逻辑是将大部分实际绘图工作交给专用图形硬件加速渲染,以实现高帧率和流畅的动画,而不会给CPU带来负担并降低应用程序的速度。
Core Animation开发动画的本质就是将CALayer中的内容转化为位图从而供硬件操作,所以想熟练掌握动画操作必须了解CALayer
CALayer
CALayer跟UIView概念上很相似,同样都是被层级管理树管理的一些矩形块,同样可以包含内容,管理子图层,可以做动画和变换。但是最大的不同是UIView可以处理用户的交互,而CALayer是不能够响应事件的,即使它提供了一些判断触点是否在图层范围内的方法。每一个UIView视图内部都封装了一个CALayer图层,我们通过UIView的layer属性访问这个图层。其实对于UIView来说负责内容展示的就是它内部的CALayer,UIView只不过是将自身的展示任务交给了内部的CALayer完成,而它还肩负着一些其它的任务,比如说用户的交互响应,提供一些Core Animation底层方法的高级接口等。
那为什么不把这些任务放在一个类中处理而是把他们作为平行关系同时存在呢?很重要的原因是要将职责分离,这样可以避免很多重复的代码,由于iOS平台和MacOS平台上用户的交互方式有着本质的不同,在iOS系统中我们使用的是UIKit和UIView,而在MacOS系统中我们使用的是AppKit和NSView,所以在这种情况下将展示部分分离出来会给苹果的多平台系统开发带来便捷。
CALayer属性
CALayer层的主要工作是管理您提供的视觉内容,图层本身具有可设置的可视属性,例如背景颜色,边框和阴影。除了管理视觉内容之外,还保留有关其内容的几何形状的信息(例如其位置,大小和变换),用于在屏幕上呈现该内容。