iOS动画 属性属性解析
2016-05-11 15:09
316 查看
CABasicAnimation和CAKeyframeAnimation继承自CAPropertyAnimation,CAPropertyAnimation继承自CAAnimation,CAAnimation实现了CAMediaTiming协议。
CAMediaTiming协议属性解析:
duration:动画的持续时间
repeatCount:动画的重复次数
repeatDuration:动画的重复时间
removedOnCompletion:默认为YES,代表动画执行完毕后就从图层上移除,图形会恢复到动画执行前的状态。如果想让图层保持显示动画执行后的状态,那就设置为NO,不过还要设置fillMode为kCAFillModeForwards。
fillMode:决定当前对象在非active时间段的行为。比如动画开始之前,动画结束之后。
kCAFillModeRemoved:这个是默认值,也就是说当动画开始前和动画结束后,动画对layer都没有影响,动画结束后,layer会恢复到之前的状态。
kCAFillModeForwards:当动画结束后,layer会一直保持着动画最后的状态。
kCAFillModeBackwards:在动画开始前,你只要将动画加入了一个layer,layer便立即进入动画的初始状态并等待动画开始.你可以这样设定测试代码,将一个动画加入一个layer的时候延迟5秒执行.然后就会发现在动画没有开始的时候,只要动画被加入了layer,layer便处于动画初始状态 。
kCAFillModeBoth:这个其实就是上面两个的合成.动画加入后开始之前,layer便处于动画初始状态,动画结束后layer保持动画最后的状态。
beginTime:可以用来设置动画延迟执行时间,若想延迟2s,就设置为CACurrentMediaTime() + 2, CACurrentMediaTime():图层的当前时间。
timeOffset:这个timeOffset可能是这几属性中比较难理解的一个,官方的文档也没有讲的很清楚. local time也分成两种一种是active local time 一种是basic local time。timeOffset则是active local time的偏移量. 你将一个动画看作一个环,timeOffset改变的其实是动画在环内的起点,比如一个duration为5秒的动画,将timeOffset设置为2(或者7,模5为2),那么动画的运行则是从原来的2秒开始到5秒,接着再0秒到2秒,完成一次动画.
speed:speed属性用于设置当前对象的时间流相对于父级对象时间流的流逝速度,比如一个动画beginTime是0,但是speed是2,那么这个动画的1秒处相当于父级对象时间流中的2秒处. speed越大则说明时间流逝速度越快,那动画也就越快.比如一个speed为2的layer其所有的父辈的speed都是1,它有一个subLayer,speed也为2,那么一个8秒的动画在这个运行于这个subLayer只需2秒(8 / (2 * 2)).所以speed有叠加的效果。
CAMediaTiming协议属性解析:
duration:动画的持续时间
repeatCount:动画的重复次数
repeatDuration:动画的重复时间
removedOnCompletion:默认为YES,代表动画执行完毕后就从图层上移除,图形会恢复到动画执行前的状态。如果想让图层保持显示动画执行后的状态,那就设置为NO,不过还要设置fillMode为kCAFillModeForwards。
fillMode:决定当前对象在非active时间段的行为。比如动画开始之前,动画结束之后。
kCAFillModeRemoved:这个是默认值,也就是说当动画开始前和动画结束后,动画对layer都没有影响,动画结束后,layer会恢复到之前的状态。
kCAFillModeForwards:当动画结束后,layer会一直保持着动画最后的状态。
kCAFillModeBackwards:在动画开始前,你只要将动画加入了一个layer,layer便立即进入动画的初始状态并等待动画开始.你可以这样设定测试代码,将一个动画加入一个layer的时候延迟5秒执行.然后就会发现在动画没有开始的时候,只要动画被加入了layer,layer便处于动画初始状态 。
kCAFillModeBoth:这个其实就是上面两个的合成.动画加入后开始之前,layer便处于动画初始状态,动画结束后layer保持动画最后的状态。
beginTime:可以用来设置动画延迟执行时间,若想延迟2s,就设置为CACurrentMediaTime() + 2, CACurrentMediaTime():图层的当前时间。
timeOffset:这个timeOffset可能是这几属性中比较难理解的一个,官方的文档也没有讲的很清楚. local time也分成两种一种是active local time 一种是basic local time。timeOffset则是active local time的偏移量. 你将一个动画看作一个环,timeOffset改变的其实是动画在环内的起点,比如一个duration为5秒的动画,将timeOffset设置为2(或者7,模5为2),那么动画的运行则是从原来的2秒开始到5秒,接着再0秒到2秒,完成一次动画.
speed:speed属性用于设置当前对象的时间流相对于父级对象时间流的流逝速度,比如一个动画beginTime是0,但是speed是2,那么这个动画的1秒处相当于父级对象时间流中的2秒处. speed越大则说明时间流逝速度越快,那动画也就越快.比如一个speed为2的layer其所有的父辈的speed都是1,它有一个subLayer,speed也为2,那么一个8秒的动画在这个运行于这个subLayer只需2秒(8 / (2 * 2)).所以speed有叠加的效果。
相关文章推荐
- 深入理解RunLoop
- 堆内存和栈内存详解(转载)
- Objective-C 的底层实现(Runtime)(转载)
- iOS多线程编程技术之NSThread、Cocoa NSOperation、GCD
- iOS中的动画解决方案(部分转载)
- NSURLSession学习笔记(一)简介
- NSURLSession学习笔记(二)Session Task
- NSURLSession学习笔记(三)Download Task
- iOS 静变量static、全局变量extern、局部变量、实例变量
- 轻松学习之三——IMP指针的作用
- 一个丝滑的全屏滑动返回手势
- 被无数人写过的assign,retain,strong,weak,unsafe_unretained,还有copy
- iOS中ARC内部原理
- 关于block使用的5点注意事项
- 编译参数-ObjC的说明
- GCD 深入理解(一)
- GCD 深入理解(二)
- iOS 三种录制视频方式
- iOS:你真的理解你在用的自定义NSLog吗?
- 微信,QQ这类IM app怎么做——谈谈Websocket