iOS 开发

CABasicAnimation

2016-02-16  本文已影响114人  雪雪雪雪佳佳佳佳

别忘了添加到layer上!!!!!

//创建动画对象

   CABasicAnimation *base = [CABasicAnimation animationWithKeyPath:@"transform.scale”];//transform.rotation.z旋转  详见layer文档

   base.duration = 1;//设定开始值到结束值花费的时间

   base.removedOnCompletion = YES;//指定的时间段完成后,动画就自动的从层上移除

   base.speed = 1.0;//默认的值为1.0.动画播放的速度

   base.beginTime = 1;//延时多长时间播放动画一班在动画组中有用

   base.timeOffset = 1;//时间偏移量

   base.repeatCount = HUGE_VALF;//动画重复次数

   base.repeatDuration = 10;//动画重复多久

   base.autoreverses = YES;//自动恢复

   base.fillMode = kCAFillModeBackwards;//填充模式

/*

   fillMode属性 (要想fillMode有效,最好设置removeOnCompletion = NO)

   kCAFillModeRemoved 默认值,动画开始前和动画结束后,动画对layer都没有影响,动画结束后,layer会恢复到动画开始前的状态

   kCAFillModeForwards 当动画结束后,layer会保持动画最后的显示状态

   kCAFillModeBackwards 在动画开始前,只需要将动画加入了一个layer, layer便立即进入动画的初始状态并等待动画的开始

   kCAFillModeBoth 上面两个的合成,动画加入后开始前,layer便处于动画初始状态,动画结束后layer保持动画最后的状态

     */

   base.fromValue = [NSValue valueWithCGPoint:CGPointMake(100, 100)];//开始点

   base.toValue =[NSValue valueWithCGPoint:CGPointMake(100, 100)];//要移动到得点

   base.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];//时间控制函数

/*

kCAMediaTimingFunctionLinear//线性匀速

kCAMediaTimingFunctionEaseIn//渐进

kCAMediaTimingFunctionEaseOut//渐出

kCAMediaTimingFunctionEaseInEaseOut//渐进检出

*/

base.calculationMode =kCAAnimationDiscrete; //物体在每个子路径下是跳着走还是匀速走即 关键帧中间的值是怎么被计算的

/*

kCAAnimationLinear//线性,默认

kCAAnimationDiscrete//离散,无中间过程,但keyTimes设置的时间依旧生效,物体跳跃地出现在各个关键帧上

kCAAnimationPaced//平均,keyTimes跟timeFunctions失效

kCAAnimationCubic//平均,同上

kCAAnimationCubicPaced//平均,同上

*/

关键帧动画

(1)按照帧进行动画

CAKeyframeAnimation *keyframe = [CAKeyframeAnimation animationWithKeyPath:@"position”];

keyframe.values = @[[NSValue valueWithCGPoint:point1],[NSValue valueWithCGPoint:point2]];//按照数组里面的点进行动画

//values指明整个动画过程中的关键帧点,需要注意的是,起点必须作为values的第一个值

(2)按照路径进行动画 事例

//path指定整个动画所经过的路径的。需要注意的是,values与path是互斥的,当values与path同时指定时,path会覆盖values,即values属性将被忽略

CAKeyframeAnimation *keyAn = [CAKeyframeAnimation animationWithKeyPath:@"position"];

keyAn.duration  = 5;

CGMutablePathRef path = CGPathCreateMutable();

//起始点

CGPoint startPoint = imageV.center;

//切点 随机生成

CGPoint cp =  [self random];

CGPathMoveToPoint(path, NULL, startPoint.x, startPoint.y);

CGPathAddQuadCurveToPoint(path, nil, cp.x,cp.y, p.x, p.y);

keyAn.path = path;

//添加

[imageV.layer addAnimation:keyAn forKey:@"ss"];

//释放

CGPathRelease(path);

动画组

CAAnimationGroup

group.animations//把动画放到组中

上一篇下一篇

猜你喜欢

热点阅读