iOS动画简介

2019-01-12  本文已影响7人  你weixiao的时候很美
1. 参考书:Core Animation

首先介绍一本书:Core Animation 链接:iOS核心动画高级技巧 这本书是关于CoreAnimation的。

Core Animation是一个复合引擎,它的职责就是尽可能快地组合屏幕上不同的可视内容,这个内容是被分解成独立的图层,存储在一个叫做图层树的体系之中。于是这个树形成了UIKit以及在iOS应用程序当中你所能在屏幕上看见的一切的基础。

动画是CoreAnimation的其中一个功能。

2.CALayer
  1. iOS中,每个视图都有一个图层属性,即backing layer。图层是真正在屏幕上显示和做动画的。 而视图封装了图层,提供了触摸交互功能,以及CoreAnimation底层方法的高级接口。

2.layer 有2个属性一个是modelLayer, 一个是presentationLayer。 当layer属性改变的时候,立即将新值存入modelLayer中。presentationLayer表示呈现层, 它的属性值代表了在任何指定时刻当前外观效果。

3.隐式动画

1.Core Animation假设屏幕上所有的东西都可以做动画。CoreAnimation根据事务的设置来做动画。 事务用CATransaction类来管理的,CATransaction有begin 和commit方法,layer的属性的改变被事务记录。Core Animation在每个run loop周期中自动开始一次新的事务(run loop是iOS负责收集用户输入,处理定时器或者网络事件并且重新绘制屏幕的东西),即使你不显式的用[CATransaction begin]开始一次事务,任何在一次run loop循环中属性的改变都会被集中起来,然后做一次0.25秒的动画。

2.为何我们改变uiview属性的时候没有动画? 因为view关联的图层的隐式动画被禁用了。对这种图层做动画的唯一办法就是使用UIView的动画函数(而不是依赖CATransaction),或者继承UIView,并覆盖-actionForLayer:forKey:方法,或者直接创建一个显式动画

4.显式动画

1.显式动画即我们主动给图层添加一个新事务。包括属性动画 ,和过渡动画。

显示动画都需要3个步骤:

2.属性动画是对一个layer的属性来做动画,使用keyPath来标记对哪个属性做动画,包括:

3.当想对layer的多个属性做动画的时候,可以使用CAAnimationGroup。把单个属性动画做成一个动画组。

layer常用的做动画的属性:

4.过渡动画:如果要改变一个不能动画的属性(比如图片),或者从层级关系中添加或者移除图层,属性动画将不起作用。需要使用过渡动画。

使用CATransition类来做过渡动画。CATransition有一个type和subtype来标识变换效果,官方目前有4种:

上一篇下一篇

猜你喜欢

热点阅读