iOS OS X Animation(动画)总结(二)

2017-06-27  本文已影响38人  BBH_Life

OS X Animation Technologies

相比使用底层的API例如OpenGL来表现动画,OS X提供了高层次的API来表现动画,不论是在Cocoa或者Carbon应用中。

Core Animation

CA是一个OC框架,第一次在OS X v10.5中介绍。使用CA你可以为下列对象动态的设置着色和动画:text,2D graphics,OpenGL,Quartz Composer compositions 和QuickTime video simultaneously,complete with transparency effects and Core Image filters and effects。
CA的核心是一个高速的2D layering引擎。
CA可以修改的layer的基础位置和形状,每个层也提供了更多可选的可操作的属性,包括:

虽然CA是一个2D引擎,但是它提供了prjective transformations来涉足3D绘图。

动画图层

CA提供了两种方式来使一个图层的虚拟属性富有生命。隐式方法和显式方法。
隐式动画是直接修改layer的属性,CA会自动的加入动画来使得属性过渡是动画形式。
显式动画需要创建一个CA对象,一个具体的Layer和可选的属性。显式动画只是修改了layer的显示属性值,并没有修改其实际上的属性值。当动画结束的时候,需要设置实际的属性值才可以使得动画比较自然。

布局管理

Core Animation 图层支持经典的Cocoa视图模型,定位图层相对于它们的超层 - 一种被称为“spring and struts”的风格。 此外,Core Animation还提供了一个更一般的布局管理器机制,允许您编写自己的布局管理器。 自定义布局管理器负责提供相关图层的子图层的布局。
使用自定义布局管理器,您的应用程序可以利用隐式动画创建复杂的动画。 更新图层的位置,大小或变换矩阵会使其对新设置进行动画处理。 CoverFlow风格的动画是通过自定义布局管理器完成的。
Core Animation提供了一个约束布局管理器类,它使用一组约束来排列图层。
每个指定的约束描述了一层(左,右,顶或底边或水平或垂直中心)的一个几何属性与其一个兄弟层或其上层的几何属性之间的关系。

CA代理

CA使用了动画代理来实现广义动画。
支持NSAnimatablePropertyContainer协议的类为符合键值编码的任何属性提供隐式动画支持。 通过动画代理操作,您可以像Core Animation一样执行隐式动画。
与核心动画不同,Core Animation只允许具有直接映射到render-tree属性的属性的动画,如果应用程序包的类实现NSAnimatablePropertyContainer协议,则允许任何键值编码兼容属性动画化。

上一篇下一篇

猜你喜欢

热点阅读