码迷,mamicode.com
首页 > 其他好文 > 详细

核心动画CABasicAnimation

时间:2016-08-15 20:44:47      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:

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"];

 

核心动画CABasicAnimation

标签:

原文地址:http://www.cnblogs.com/xiaodiandian/p/5774205.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!