标签:
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"];
标签:
原文地址:http://www.cnblogs.com/xiaodiandian/p/5774205.html