Core Animation是一个Objc类库,用于处理图像渲染,投射和动画。
它提供以下功能:
使用 Core Animation,开发者不再需要底层图形接口就可以创建高性能的动态用户界面了。
Core Animation类图
Core Animation的类可分为以下几组:
基本的 Core Animatin 类包含在 Quartz Core 框架中,也有另外的layer类在其他框架中定义。下图展示了 Core Animation 的类体系。
CALayer 是Core Animation的基础,它的作用类似于 NSView 。每一个 CALayer 可以拥有一个父层和多个子层,由此形成一个树状结构的体系,叫做 layer tree。
层从后往前的顺序进行渲染,子层基于和父层相对的局部坐标系统。还可以对层进行矩阵转换以实现复杂的展示效果( 详情 )。
在 CALayer 中,除了继承还有多种方式可以为它提供显示的内容,这一点有别于其他视图类( 详情 ):
层的很多可视属性都可以产生隐式动画,这些属性称为可动画属性,修改层的可动画属性自动就会产生从当前值变化到目标值的动画,比如设置层的hidden属性为YES,就会产生一个淡出的动画。大部分可动画属性都有默认的动画,这些动画也是可以定制的。 可动画属性列表
可动画属性也可以进行显式动画,要创建显式动画你可以创建Core Animation动画类的实例并指定视觉效果,显式动画不会修改层对象的属性值,它仅仅是展示动画效果而已。
Core Animation既提供基本动画也提供关键桢动画,你可以对层的整个内容进行动画也可以对部分属性进行动画。所有动画类都继承自抽象类 CAAnimation 。 CAAnimation 遵守 CAMediaTiming 协议,可以对动画进行简单的时长,速度,重复次数控制。它还遵守 CAAction 协议,可以让动画在层触发action时启动( 详情 )。
动画类还定义了描述动画速度的基于简单bezier曲线的时间函数。比如ease-out时间函数会让动画在快结束的时候减速。
Core Animation提供了许多或具体或抽象的动画类( 详情 ):
Mac OS X 的 Core Animation 还提供更灵活的机制可以让你自己编写自定义的 layout 管理器。
Core Animation 的 CAConstraint 类是个layout管理器,它根据你指定的约束条件对子层进行排列。每一个约束条件(封装在 CAConstraint 类的实例中)描述层和兄弟层或父层之间的几何属性的关系。
对可动画属性的任何修改都应该在事务中完成。 CATransition 类负责将多个动画操作打包成原子更新操作然后执行。支持嵌套事务。
Core Animation 支持两种事务:隐式和显式。在当前没有事务的情况下对可动画属性进行修改会自动创建一个隐式的事务,在当前线程下一次迭代时自动提交。要创建显式事务,在对层进行修改之前给 CATransition 类发一个 begin 消息,修改后再发一个 commit 消息。
转载请注明出处,收藏或分享这篇文章到:
Website content copyright © by 黄毅. All rights reserved.