iOS Core Animation编程指南

iOS Core Animation官方文档翻译稿

CoreAnimation编程指南(十)KVC

CAAnimation和CALayer类扩展了NSKeyValueCoding协议,给键添加默认值,扩展了封装协议,支持CGPoint、CGRect、CGSize和CATransform3D关键路径。
1.1  键-值编码兼容的容器类
CALayer和CAAnimation都是键-值编码兼容的容器类,允许你修改属性键对应的值。即使键为“someKey”对应的属性没有被定义,你也可以给“someKey”的键设置一个值,如下:
[theLayer setValue:[NSNumber numberWithInteger:50] forKey:@"someKey"];
你可以通过下面的代码检索“someKey”对应的值:

CoreAnimation编程指南(九)图层布局

NSView提供了经典的“stuts and springs”模式,用于视图调整大小的时候把关联到它父图层的视图重新调整位置。图层支持该模式,而且Mac OS X上面的核心动画提供了一个更通用的布局管理器机制,允许开发者自己写他们自己的布局管理器。可以为图层定制一个布局管理器(它通常实现CALayoutManager协议),负责给图层的子图层提供布局功能。
本章介绍了约束布局管理器和如何配置一系列约束条件。

iOS 注意:iOS的CALayer类仅提供“stuts and

CoreAnimation编程指南(八)事务

图层的每个改变都是事务的一部分。CATransaction是核心动画类,它负责成批的把多个图层树的修改作为一个原子更新到渲染树。
本章介绍了核心动画支持的两种事务。隐式事务和显式事务。
 
1.1 隐式事务
当图层树被没有获得事务的线程修改的时候将会自动创建隐式事务,当线程的运行循环(run-loop)执行下次迭代的时候将会自动提交事务。
代码1的示例修改图层的opacity,zPosition和position数字,依赖隐式事务来确保动画同时一起发生。

CoreAnimation编程指南(七)图层Action

图层的行为在以下情况发生的时候被触发:从图层树里面插入或者删除一个图层,图层的属性值被修改了,或者程序显式要求。通常情况下,行为触发器是动画显示的结果所在。
 
1.1 行为对象的角色
一个行为对象是一个通过CAAction协议响应行为标识符的对象。行为标识符使用标准圆点分隔的关键路径来命名。图层负责把行为标识符映射到特定的行为对象。当一个特定标识符的行为对象被确定的时候,它会发送一个CAAction协议定义的消息。
CALayer类提供了默认的CAAnimation的行为对象实例,一个兼容类所有动画层属性CAAction协议。表1中CALayer同样定义了以下没有直接对应到属性的行为触发器和他们的行为标识符。
表 1  Action

CoreAnimation编程指南(六)动画

动画是当今用户界面的关键因素。当使用核心动画的时候,动画是自动完成的。没有动画的循环和计数器。你的应用程序不负负责重绘,也不负责跟踪动画的当前状态。动画在独立线程里面自动执行,没有和你的应用程序交互。
本章提供了对动画类的概览,和介绍如何创建隐式的和显式的动画。
 
1.1 动画类和时序
核心动画提供了一套你可以在你应用程序里面使用的动画类的表现:

CoreAnimation编程指南(五)图层内容

当我们使用Cocoa的视图的时候,我们必须继承NSView或者UIView并且重载函数drawRect:来显示任何内容。但是CALayer实例可以直接使用,而无需继承子类。因为CALayer是一个键-值编码兼容的容器类,你可以在实例里面存储任意值,所以子类实例化完全可以避免。
1.1 给CALayer提供内容
你可以通过以下任何一种方法指定CALayer实例的内容:

使用包含图片内容的CGImageRef来显式的设置图层的contents的属性。
指定一个委托,它提供或者重绘内容。

CoreAnimation编程指南(四)图层树结构

图层不但给自己提供可视化的内容和管理动画,而且充当了其他图层的容器类,构建图层层次结构。
本章介绍了图层层次结构,以及如何操纵该图层层次结构。
 
1.1 什么是图层树的层次结构
图层树是核心动画里面类似Cocoa视图的层次结构。比如一个NSView或者UIView的实例拥有父视图(superview)和子视图(subview),一个核心动画的图层拥有父图层(suplayer)和子图层(sublayer)。图层树和视图结构一样提供了很多便利:

CoreAnimation编程指南(三)几何变换

本章介绍图层的几何组成部分,及他们之间的相互关,同时介绍如何变换矩阵可以产生复杂的视觉效果。
 
1.1 图层的坐标系
图层的坐标系在不同平台上面具有差异性。在iOS系统中,默认的坐标系统原点在图层的中心左上角地方,原点向右和向下为正值。在Mac OS X系统中,默认的坐标系原点在图层的中心左下角地方,原点向右和向上为正值。坐标系的所有值都是浮点类型。你在任何平台上面创建的图层都采用该平台默认的坐标系。
每个图层定义并维护自己的坐标系,它里面的全部内容都由此相关的坐标系指定位置。该准则同时适应于图层自己的内容和它的任何子图层。因为任何图层定义了它自己的坐标系,CALayer类提供相应的方法用于从一个图层坐标系的点、矩形、大小值转化为另一个图层坐标系相应的值。

CoreAnimation编程指南(二)渲染架构

虽然核心动画的图层和 Cocoa的视图在很大程度上没有一定的相似性,但是他们两者最大的区别是,图层不会直接渲染到屏幕上。
    在模型-视图-控制器(model-view-controller)概念里面NSView和UIView是典型的视图部分,但是在核心动画里面图层是模型部分。图层封装了几何、时间、可视化属性,同时它提供了图层现实的内容,但是实际显示的过程则不是由它来完成。
每个可见的图层树由两个相应的树组成:一个是呈现树,一个是渲染树。下图显示在Mac OS X上面使用核心动画图层类显示一个图层树的例子。
图 1  Core Animation

CoreAnimation编程指南(一)概念

第一章      核心动画概念
核心动画是一套包含图形绘制,投影,动画的Objective–C类集合。它通过开发人员所熟悉的应用程序套件和Cocoa Touch视图架构的抽象分层模式,同时使用先进的合作效果提供了一套流畅的动画。
动态的动画接口很难创建,但是核心动画通过提供如下接口使这些创建起来变得更加简单:

简单易用的高性能混合编程模型。
类似视图一样,你可以通过使用图层来创建复杂的接口。

CoreAnimation编程指南(简介)

核心动画编程介绍
本文档介绍了在使用核心动画时所涉及的基本概念。核心动画的是Objective - C的框架,它通过简单的动画编程接口来提供一套高性能的动画引擎。
你应该阅读此文档来理解Cocoa应用程序核心动画工作的机制。 阅读此文档的前提是你已经掌握了Objective-C语言的基础,因为核心动画内部广泛的使用了Objective-C的相关属性。你还应该熟悉键-值编程方法(参考文档 Key-Value Coding Programming Guide)。同时如果你对Quartz 2D编程有一定了解的话,将会对您掌握本文档带来帮助,但这不是必须的(参考文档 Quartz 2D