简介
关于Core Animation
Core Animation
是iOS和OS X平台上用来绘制渲染和做动画的基础框架;开发者用它来实现应用内views
和其他可视化元素的动画。有了Core Animation
,绝大部分需要绘制动画的每一帧的工作都由它帮我们完成了。我们需要做的仅仅是去配置少量的动画参数(比如:起始和结束点);同时告诉Core Animation
开始动画。Core Animation
将替我们完成剩余的工作,将大部分实际绘图工作交给设备搭载的图形硬件来加速渲染。这种自动绘图加速带来的是高帧率和流畅的动画效果,而不会加重CPU的负载或者减缓我们APP运行。
如果你正在开发iOS应用,不管你是否意识到,你都在使用Core Animation
。如果你正在开发OS X应用,你也只需要极小的工作量就能利用Core Animation
带来的好处。Core Animation
是AppKit
和UIKit
的底层技术,并被紧紧的整合在Cocoa
和Cocoa Touch
视图的工作原理流程中。当然,Core Animation
同时还有关一些能够扩展views
能耐的接口,这些接口可以让你更加细粒度地控制应用的动画。
初窥
你可能永远不需要直接使用Core Animation
,但是当你需要的时候,你应该理解Core Animation
在你的应用基础框架中扮演的角色。
Core Animation
管理你应用的显示内容
Core Animation
自身不是绘制系统。它是一个用作合成并操作应用在硬件上显示的内容的基础框架。这个基础框架的核心便是layer
对象;图层管理并操控显示内容。一个图层将你提供的内容快照(capture)到能够轻易被图形硬件操控的位图中。在大部分应用中,图层被作为一种管理视图内容的方式;但是如果有需要的话,你可以创建单独的图层。
相关章节:Core Animation
基础、创建图层对象
Layer
的修改会触发动画
大部分使用Core Animation
创建的动画涉及到Layer的属性修改。如同views
,layer
对象有bounds
、position
、opacity
、transform
和许多其他可修改的视觉属性。对于大多数这些属性而言,改变这些属性的值将触发图从旧值到新值的隐式动画。当你想要更多地去控制动画效果时候,你可以显式地调整这些属性做动画。
相关章节:Animating Layer Content、Advanced Animation Tricks、Layer Style Property Animations、Animatable Properties
图层的层次化
图层之间通过建立父子关系来形成层次化结构。图层的排列层次顺序会影响内容的曾现效果,图层层次的管理方式和视图层次的管理方式很类似。一系列视图上的图层的层次结构反映出了相应的视图的层次结构。你也可以将单独创建的图层添加到图层的层次结构中,用来扩展仅仅由视图提供的内容。
相关章节:Building a Layer Hierarchy
Actions
使我们能够改变图层的默认行为
隐式图层动画是通过使用action
对象(CAAction
)实现的;action
对象是一些实现了预先定义好的接口(CAAction protocol
)的通用对象。Core Animation
使用action
对象来实现和图层相关了一系列缺省动画效果。你也可以创建自己的action
对象实现自定义的动画或者是其他自定义的图层行为。然后将你的action
对象赋值给图层的某个属性。当那个属性变化的时候,Core Animation
会取出你定义的action
对象并执行这个action
。
相关章节: Changing a Layer’s Default Behavior
如何使用这个文档
这个文档是为了那些想控制他们应用的动画,或者想要使用图层去提升绘制性能的开发者而编写的。这个文档也提供了在iOS与OS X平台上layer
和view
之间的相互关系的知识。layer
和view
之间的相互关系在iOS和OS X具有一定的差异,理解这些差异对于创建更高效的动画性能很重要。
预备知识
你应该已经理解你所开发的目标平台的view
的结构,并熟悉如何创建基于view
的动画。如果你没有这些基础知识,你应该读以下文档之一:
- 对于iOS应用: View Programming Guide for iOS
- 对于OS X应用: View Programming Guide
其他资料
对于使用Core Animation
创建特定类型的动画。请查阅:《Core Animation Cookbook》。