CABasicAnimation

别忘了添加到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//把动画放到组中

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌。在这里你可以看...
    F麦子阅读 10,521评论 5 13
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥ios动画全貌。在这里你可以看...
    每天刷两次牙阅读 12,713评论 6 30
  • import "ViewController.h" import <QuartzCore/QuartzCore.h...
    seventhboy阅读 4,818评论 0 4
  • 所以孩子们每一天课堂生成,在这个角度来理解,真的是很有效的,因为他们没有理解,真的没有理解,今天第二天了,我才发现...
    马上做阅读 760评论 0 0
  • 来源: IT经理网链接:www.ctocio.com/hotnews/15919.html 机器学习无疑是当前数据...
    流川枫AI阅读 7,761评论 4 64