核心动画CABasicAnimation

Core Animation是一组非常强大的动画处理API,使用它能做出非常炫丽的动 画效果,而且往往是事半功倍! 

1.开发步骤:

初始化一个动画对象(CAAnimation)并设置一些动画相关属性

添加动画对象到层(CALayer)中,开始执行动画

Core Animation的动画执行过程都是在后台操作的,不会阻塞主线程 

2.Core Animation的主要类

提供显示内容的图层类:CALayer及其子类

动画和计时类:CAAnimation及其子类、CAMediaTiming

布局和约束类:CAConstraint、CAConstraintLayoutManager

事务类,在原子更新的时候组合图层类:CATransaction、CAActiontransition 

3.CABasicAnimation基本动画,是CAPropertyAnimation的子类

属性说明:

fromValue:keyPath相应属性的初始值

toValue:keyPath相应属性的结束值 

3.1动画过程说明:

随着动画的进行,在长度为duration的持续时间内,keyPath相应属性的值从fromValue 渐渐地变为toValue

keyPath内容是CALayer的可动画Animatable属性

如果fillMode=kCAFillModeForwards同时removedOnComletion=NO,那么在动画执 行完毕后,图层会保持显示动画执行后的状态。但在实质上,图层的属性值还是动画执行前的 初始值,并没有真正被改变。 

上代码:

// 1 CAanimation

    //bounds transform

    //KeyPath:指定layer的一个属性值,通过修改该属性值达到动画的效果

    CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.scale"];

    

    //2 设置属性

    //1>动画的起始值

    animation.fromValue = @0.5;

    //2>动画的结束值

    animation.toValue = @3;

    

//---------    CAMediaTiming----------

    

    //3>动画的持续时间

    animation.duration = 3;

    //4>自动回放 (多花一倍时间)

//    animation.autoreverses = YES;

    //5>动画完成后移除动画 (如果不移除动画,需要和填充方式一起使用)

    animation.removedOnCompletion = NO; //(默认是yes)

    //6>填充方式

    animation.fillMode = kCAFillModeForwards;

//    animation.fillMode = kCAFillModeBackwards;

    /*

     kCAFillModeForwards:保留动画结束后的效果

     kCAFillModeBackwards:动画开始之前,会提前进入动画开始的效果(开延时才可以看出)

     kCAFillModeBoth:2者都有

     kCAFillModeRemoved:2者都没有

     

     */

    //7>beginTime:开始时间 (延迟一秒之后执行动画)

//    animation.beginTime = CACurrentMediaTime()+1;

    

    //8>timeOffset 时间偏移量 (开始执行第2秒的动画,执行到指定的持续时间为止)

//    animation.timeOffset = 2;

    //9>repeatCount:重复次数

    animation.repeatCount = 2;

    //10>repeatDuration:重复的总时间 (如果和重复次数有冲突,遵循重复时间)

    animation.repeatDuration =4;

    //11>speed:动画的速度 (和持续时间冲突)

    animation.speed =.3;

    

      //3 将动画对象添加到layer上面

    //key:标示

    //animation对象在这copy一份;所以属性要写在添加之前

    [self.myImageView.layer addAnimation:animation forKey:@"animation"];

 

转载于:https://www.cnblogs.com/xiaodiandian/p/5774205.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值