11.17核心动画

(一)概念:

  (1)核心动画CoreAnimation,是一套强大的动画处理API,使用它可以做出绚丽的动画效果。并且是跨平台的,OS 和MAC都可以使用。核心动画的动画执行都在后台操作,不会阻塞主线程。要注意的是CoreAnmiation是直接作用在CALayer上的。并不是UIView。

  (2)pop框架,是facebook出的一套框架,听说比核心动画实现还方便。有些动画特别好看,很可能就是pop实现的。

  (3)架构:

   

(二)基本动画:CABasicAnimation

// --- 基本动画(CABasicAnimation)
// keyPath 需要修改的属性
// fromValue 从哪
// toValue 到哪
// byValue 累加到哪
// repeatCount 重复的次数
// duration 时间

from to是合起来用实现动画。

byValue是累加的。

CAPropertyAnimation的子类
属性解析:
fromValue:keyPath相应属性的初始值
toValue:keyPath相应属性的结束值
随着动画的进行,在长度为duration的持续时间内,keyPath相应属性的值从fromValue渐渐地变为toValue
如果fillMode=kCAFillModeForwards和removedOnComletion=NO,那么在动画执行完毕后,图层会保持显示动画执行后的状态。但在实质上,图层的属性值还是动画执行前的初始值,并没有真正被改变。比如,CALayer的position初始值为(0,0),CABasicAnimation的fromValue为(10,10),toValue为(100,100),虽然动画执行完毕后图层保持在(100,100)这个位置,实质上图层的position还是为(0,0)

整个判断修改什么属性用到keyPath关键字。

  默认的动画时间是0.25秒。通过duration属性来改变。

  动画执行完毕后会默认回到以前的位置。可以通过 fillMode,removedOnCompletion组合使用。但是这也只是图层过去了。是一个假象,单击事件还在原位置。所以直接修改layer的postion位置到指定点就可以了。

(三)CAAnimation:是所有动画对象的父类,是一个抽象类,负责控制动画的持续时间和速度。不能直接使用。并且遵守CAMediaTiming协议。

n属性解析:(红色代表来自CAMediaTiming协议的属性)
duration:动画的持续时间
repeatCount:动画的重复次数
repeatDuration:动画的重复时间
removedOnCompletion:默认为YES,代表动画执行完毕后就从图层上移除,图形会恢复到动画执行前的状态。如果想让图层保持显示动画执行后的状态,那就设置为NO,不过还要设置fillMode为kCAFillModeForwards
fillMode:决定当前对象在非active时间段的行为.比如动画开始之前,动画结束之后
beginTime:可以用来设置动画延迟执行时间,若想延迟2s,就设置为CACurrentMediaTime()+2,CACurrentMediaTime()为图层的当前时间
timingFunction:速度控制函数,控制动画运行的节奏
delegate:动画代理

(四)CAPropertyAnmiation:是CAAnimation的子类,也是抽象类。子类是CABasicAnmation和CAKeyframeAnimation。属性有keyPath。

(五)CAKeyFrameAnmiation:CApropertyAnimation的子类,跟CABasicAnimation的区别是:CABasicAnimation只能从一个数值(fromValue)变到另一个数值(toValue),而CAKeyframeAnimation会使用一个NSArray保存这些数值。

属性解析:
values:就是上述的NSArray对象。里面的元素称为”关键帧”(keyframe)。动画对象会在指定的时间(duration)内,依次显示values数组中的每一个关键帧
path:可以设置一个CGPathRef\CGMutablePathRef,让层跟着路径移动。path只对CALayer的anchorPoint和position起作用。如果你设置了path,那么values将被忽略
keyTimes:可以为对应的关键帧指定对应的时间点,其取值范围为0到1.0,keyTimes中的每一个时间值都对应values中的每一帧.当keyTimes没有设置的时候,各个关键帧的时间是平分的
CABasicAnimation可看做是最多只有2个关键帧的CAKeyframeAnimation.
 
(六)CAAnimationGroup:组动画,把动画添加到组里面。 里面有个key,可以判断是否重复添加了动画。
(七)转场动画:CATransition。能够为层提供移除屏幕和移入屏幕的动画效果。UINavigationController就是通过转场动画实现控制器视图推入屏幕效果。
属性解析:
type:动画过渡类型
subtype:动画过渡方向
startProgress:动画起点(在整体动画的百分比)
endProgress:动画终点(在整体动画的百分比)

  

posted @ 2015-11-17 17:57  珍妮是谁  阅读(200)  评论(0编辑  收藏  举报