核心动画(基础动画)

一、简单介绍
项目中常用的动画效果基本使用CABasicAnimation就能完成,它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)

  • Core Animation的使用步骤*
    1.使用它需要先添加QuartzCore.framework框架和引入主头文件(iOS7不需要)
    2.初始化一个CAAnimation对象,并设置一些动画相关属性
    3.通过调用CALayer的addAnimation:forKey:方法增加CAAnimation对象到CALayer中,这样就能开始执行动画了
    4.通过调用CALayer的removeAnimationForKey:方法可以停止CALayer中的动画

二、实例

  • 创建动画对象

      CABasicAnimation *rotationAnimation = [CABasicAnimation   animationWithKeyPath:@"transform.rotation.y"];
       rotationAnimation.toValue = @(2 * M_PI);
       rotationAnimation.repeatCount = MAXFLOAT;
       rotationAnimation.duration = 5;
       rotationAnimation.removedOnCompletion = NO;
    
  • 通过animationWithKeyPath设置不同动画效果
    常用KepPath动画效果
    transform.scale = 比例缩放
    transform.scale.x = 宽的比例缩放
    transform.scale.y = 高的比例缩放
    transform.rotation = 平面的旋转
    transform.rotation.y =Y方向旋转
    transform.rotation.x = X方向旋转
    opacity = 透明度变化

  • 把动画对象添加到你想运用动画的空间图层上
    [self.iconView.layer addAnimation:rotationAnimation forKey:nil];

三、小结

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

你可能感兴趣的:(核心动画(基础动画))