- Core Animation的使用步骤
- 首页的有一个
CALayer
- 初始化一个
CAAnimation
对象,并设置一些动画相关属性
- 通过调用
CALayer
的addAnimation:forKey:
方法,增加CAAnimation
对象到CALayer
中,这样就能开始执行动画了
- 通过调用
CALayer
的removeAnimationForKey:
方法可以停止CALayer
中的动画
CAAnimation
- 从前面的叙述可以看出,想要执行动画,就必须初始化一个
CAAnimation
对象
- 其实,一般情况下,我们看到的是
CAAnimation
的子类,因此,先大致看看CAAnimation
的集成结构
CAAnimation的常用属性
CAAnimation
是所有动画类的父类,但是它不能直接使用,应该使用它的子类
duration
:动画持续的时长
repeatCount
:动画重复的次数 ,无限循环可以设置HUGE_VALF或者MAXFLOAT
removedOnCompletion
:默认为YES,代表动画执行完毕后就从图层上移除,图形会恢复到动画执行前的状态。如果想让图层保持显示动画执行后的状态,那级设置为NO ,不过还要设置fillModel
为KCAFillModeFowards
fillMode
: 决定当前对象在非active时间段的行为,比如动画开始之前或者动画结束之后
-
timingFunction
:控制动画运行的节奏
-
kCAMediaTimingFunctionLinear
(线性):匀速,给你一个相对静态的感觉
-
kCAMdeiaTimingFunctionEaseIn
(渐进):动画缓慢进入,然后加速离开
-
kCAMediaTimingFunctionEasOut
(渐出) :动画全速进入,然后减速的到达目的地
-
kCAMediaTimingFunctionEaseInEaseOut
(渐进渐出):动画缓慢的进入,中间加速,然后减速的到达目的地。这个是默认的动画行为
-
fillModel
属性值(要想fillModel有效,最好设置removedOnComplection = NO)
-
kCAFillModeRemoved
这个是默认值,也就是说当动画开始前和动画结束后,动画对layer都没有影响,动画结束后,layer会恢复到之前的状态
-
kCAFillModelForwards
当动画结束后,layer会一直保持着动画最后的状态
-
kCAFillModeBackwards
在动画开始前,只需要将动画加入了一个layer,layer便立即进入动画的初始状态并等待动画开始。
-
kCAFillModeBoth
这个其实就是上面两个的合成.动画加入后开始之前,layer便处于动画初始状态,动画结束后layer保持动画最后的状态
delegate
:动画代理,用来监听动画的执行过程
beiginTime
: 可以用来设置动画延迟执行时间,若想延迟2s,就设置为CACurrentMediaTime()+2
CACurrentMediaTime()
为图层的当前时间
代理对象需要实现的方法有:
@interface NSObject (CAAnimationDelegate)
// 动画开始执行的时候触发这个方法
- (void)animationDIdStart:(CAAnimation *)anim;
// 动画执行完毕的时候触发这个方法
- (void) animationDidStop:(CAAnimation *)anim finished:(BOOL) flag;
- 上面介绍的所有属性都是属于·CAAnimation
的,因此,
CAAnimation`的所有子类都可以使用