核心动画学习笔记

2017-06-27  本文已影响12人  HAPPY小元宝

1、核心动画类

1.1.1 图层类 (Layer Classes)
图层类是核心动画的核心基础,它提供了一套抽象的概念。CALayer是整个图层类的基础,它是所有核心动画图层类的父类。
和视图类(NSView或UIView)一样,CALayer有自己的父图层类,同时也拥有自己子图层类的集合,它们构成了一个图层树的层次结构。图层绘制类似视图一样自底向上,并制定其几何形状相对它们的superlayer,创建一个相对的局部坐标系,然而图层类通过合并变换矩阵允许你旋转、偏移、拉伸对应的图层内容。
CALayer 从 Application Kit 和 Cocoa Touch 的视图类分离出来,因为没有必要为 了显示内容而继承 CALayer 类。因为 CALayer 类的内容显示可以通过以下方法提供:

1.1.2 动画和计时类
图层的很多可视化属性是可以隐式动画的。通过简单的改变图层的可动画显示的 属性,可以让图层现有属性从当前值动画渐变到新的属性值。例如设置图层的 hidden 属性为 YES 将会触发动画使层逐渐淡出。大多数动画属性拥有自己关联的默认动画, 你可以轻松地定制和替换。动画的属性也可以显式动画。要显式动画的属性,你 需要创建核心动画动画类的一个实例,并指定所需的视觉效果。显式动画不会改变该 属性的值,它只是用于动画显示。
核心动画的动画类使用基本的动画和关键帧动画把图层的内容和选取的属性动 画的显示出来。所有核心动画的动画类都是从 CAAnimation 类继承而来。CAAnimation 实现了 CAMediaTiming 协议,提供了动画的持续时间,速度,和重复计数。 CAAnimation 也实现了 CAAction 协议。该协议为图层触发一个动画动作提供了标准化响应。
动画类同时定义了一个使用贝塞尔曲线来描述动画改变的时间函数。例如,一个 匀速时间函数(linear timing function)在动画的整个生命周期里面一直保持速度不变, 而渐缓时间函数(ease-out timing function)则在动画接近其生命周期的时候减慢速度。

核心动画额外提供了一系列抽象的和细化的动画类,比如:

1.1.3 布局管理器类
Application Kit 的视图类相对于 superlayer 提供了经典的“struts and springs”定位 模型。图层类兼容这个模型,同时 Mac OS X 上面的核心动画提供了一套更加灵活 的布局管理机制,它允许开发者自己修改布局管理器。核心动画的 CAConstraint 类 是一个布局管理器,它可以指定子图层类限制于你指定的约束集合。每个约束 (CAConstraint 类的实例封装)描述层的几何属性(左,右,顶部或底部的边缘或水 平或垂直中心)的关系,关系到其同级之一的几何属性层或 superlayer。

1.1.4 事物管理类
图层的动画属性的每一个修改必然是事务的一个部分,CATransaction 是核心动画里面负责协调多个动画原子更新显示操作,事务支持嵌套使用。
核心动画支持两种事务:隐式事务和显式事务。在图层的动画属性被一个线程修 改,同时该线程下次迭代的时候自动提交该修改的时候隐式事务自动创建。显式事务 发生在程序在修改动画属性之前给 CATransaction 发送了一个开始消息,在动画属性
修改之后提交该消息。

上一篇下一篇

猜你喜欢

热点阅读