前言html
做为iOS 开发,官方文档的阅读是颇有必要的,值此周末便写下此文。做为iOS 实际经验3年的开发,以前有阅读并实践过经典的<iOS核心动画高级技巧>,其gitbook地址,然总觉此书的翻译版,较于目前的CoreAnimation 官方文档的有所空缺,故生念,愿有所补缺,便着手翻译CoreAnimation,若有纰漏,望各位兄台不吝赐教。ios
补充:关于OS X的内容将基本不作翻译(除非关联iOS的对比)。git
关于 Core Animation(如下翻译为:核心动画)架构
核心动画是可用于iOS和OS X平台上实现APP 内部Views和其余可视化元素制做动画效果的图形渲染和图形动画的基础工具;借助核心动画,它帮咱们完成了绘制动画中每一帧的大部分工做。咱们须要作的仅仅是去配置少许的动画参数(例如开始和结束的点),并启动核心动画,核心动画完成剩余的工做,将大部分实际绘图工做交给 内部绘图硬件加速渲染。这种自动绘图加速在不加剧CPU的负载和减缓咱们APP运行的同时达到高帧率和流畅的动画效果。app
若是你正在开发iOS APP,你将无时无刻的使用核心动画,无论你是否意识到,若是你正在开发OS XAPP,你也能经过极小的工做量 充分使用核心动画。核心动画 包含在AppKit和UIKit中,并被牢牢的集合在Cocoa 和Cocoa Touch 中View 的工做原理流程中。固然,核心动画也暴露有关于 View 的扩展功能的接口,这些接口API 给出许多详细的控制关于APP动画效果。ide
初窥工具
你可能永远不须要直接使用核心动画,可是咱们须要理解核心动画 扮演了咱们APP一部分基础设施的角色。性能
核心动画管理咱们APP的显示内容动画
核心动画自己不是绘制系统,他就是一个做为 合成并操做APP 显示内容的基础工具。这个基础工具的核心即是Layer 对象,Layer 管理 并操控 显示内容,Layer 捕获显示内容放进 可以很容易被绘图硬件操做解析的bitmap中。在大部分APP 中,Layer 被做为View 的属性 管理显示内容,可是若是有须要的话,咱们能够建立单独的Layer。ui
《相关章节:Core Animation Basics, Setting Up Layer Objects》:(后续会有译文)
Layer 的修改会触发动画
大部分使用核心动画建立的动画涉及到Layer的属性修改。例如View 和Layer对象有bounds ,position ,opacity,transform,和许其余可修改的视觉导向的属性, 改变这些属性的值将触发Layer动画发生从旧值到新值的隐式动画。当咱们想要去控制更多的动画效果时候,咱们也能够调整这些属性作显式动画
《相关章节: Animating Layer Content, Advanced Animation Tricks, Layer Style Property Animations, Animatable Properties》:(后续会有译文)
Layers 的层次化
Layers 之间创建父子关系来层次化管理。这种Layers的层次化管理方式将会像Views层次化管理同样,会影响Layers的显示内容。 做为View 的属性的Layers的层次,可以反映出Layers对应的View的层次。咱们也能够将单首创建的Layer 添加到Layer 层次中,以便扩充APP的显示内容,而不只是使用Views。
《相关章节:Building a Layer Hierarchy 》:(后续会有译文)
Actions 使咱们改变Layer的默认动画行为
隐式Layer 动画是经过使用 Action 对象达到的,Action 是包含预先定义的动画效果的对象类型。核心动画使用Action 对象执行和Layer 关联的 默认动画集合。咱们也能够建立本身的Action对象实现自定义的动画、实现其余种类的动效。咱们关联自定义的Action 对象到一个Layer的属性,当那个属性变化的时候,核心动画会取出咱们的Action对象并执行这个Action.
《相关章节: Changing a Layer’s Default Behavior》:(后续会有译文)
如何使用这个文档
这个文档是为了那些想控制他们APP的动画,或者想要使用Layers 去提高绘制性能的人而写。这个文档也提供基于iOS与OS X平台内Layer 和View之间的相互关系的讲解。Layer 和View 之间的相互关系在iOS和OS X具备必定的差别,而且理解这些差别对于建立更高效的动画性能很重要。
所需预备知识
你应该已经理解你所开发的目标平台的View的结构,并熟悉如何建立基于View的动画。若是你没有这些基础知识,你应该读如下文档:
1.对于iOS APP,了解View的架构描述经过 View Programming Guide for iOS.
2.对于OS X APP,了解View的架构描述经过 View Programming Guide.
注:后续我将会有新的翻译更新,以为不错的朋友能够暂等下