Core Animation1-简介

- Core Animation的使用步骤
  • 首页的有一个CALayer
  • 初始化一个CAAnimation对象,并设置一些动画相关属性
  • 通过调用CALayeraddAnimation:forKey:方法,增加CAAnimation对象到CALayer中,这样就能开始执行动画了
  • 通过调用CALayerremoveAnimationForKey:方法可以停止CALayer中的动画

CAAnimation

  • 从前面的叙述可以看出,想要执行动画,就必须初始化一个CAAnimation对象
  • 其实,一般情况下,我们看到的是CAAnimation的子类,因此,先大致看看CAAnimation的集成结构
    Core Animation1-简介_第1张图片
    image.png
CAAnimation的常用属性
  • CAAnimation是所有动画类的父类,但是它不能直接使用,应该使用它的子类

  • duration:动画持续的时长

  • repeatCount:动画重复的次数 ,无限循环可以设置HUGE_VALF或者MAXFLOAT

  • removedOnCompletion :默认为YES,代表动画执行完毕后就从图层上移除,图形会恢复到动画执行前的状态。如果想让图层保持显示动画执行后的状态,那级设置为NO ,不过还要设置fillModelKCAFillModeFowards

  • 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`的所有子类都可以使用

你可能感兴趣的:(Core Animation1-简介)