iOS CAKeyframeAnimation关键帧动画用法

用法1​ Value方式

一个数组,提供了一组关键帧的值, 当使用path的 时候 values的值自动被忽略。

//创建动画对象

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

//设置value

NSValue *value1=[NSValuevalueWithCGPoint:CGPointMake(100, 100)];

NSValue *value2=[NSValuevalueWithCGPoint:CGPointMake(200, 100)];

NSValue *value3=[NSValuevalueWithCGPoint:CGPointMake(200, 200)];

NSValue *value4=[NSValuevalueWithCGPoint:CGPointMake(100, 200)];

NSValue *value5=[NSValuevalueWithCGPoint:CGPointMake(100, 300)];

NSValue *value6=[NSValuevalueWithCGPoint:CGPointMake(200, 400)];

animation.values=@[value1,value2,value3,value4,value5,value6];

//重复次数 默认为1

animation.repeatCount=MAXFLOAT;

//设置是否原路返回默认为NO

animation.autoreverses = YES;

//设置移动速度,越小越快

animation.duration = 4.0f;

 animation.removedOnCompletion = NO;

animation.fillMode = kCAFillModeForwards;

animation.timingFunction=[CAMediaTimingFunctionfunctionWithName:kCAMediaTimingFunctionEaseInEaseOut];

animation.delegate=self;

//给这个view加上动画效果

[moveView.layer addAnimation:animation forKey:nil];

####### 用法2​、 Path方式​

这是一个 CGPathRef 对象,默认是空的,当我们创建好CAKeyframeAnimation的实例的时候,可以通过制定一个自己定义的path来让 某一个物体按照这个路径进行动画。这个值默认是nil 当其被设定的时候 values 这个属性就被覆盖

//创建动画对象

CAKeyframeAnimation *animation = [CAKeyframeAnimationanimationWithKeyPath:@"position"];

//创建一个CGPathRef对象,就是动画的路线

CGMutablePathRef path = CGPathCreateMutable();

//自动沿着弧度移动

CGPathAddEllipseInRect(path, NULL, CGRectMake(150, 200, 200, 100));

//设置开始位置

CGPathMoveToPoint(path,NULL,100,100);

//沿着直线移动

CGPathAddLineToPoint(path,NULL, 200, 100);

CGPathAddLineToPoint(path,NULL, 200, 200);

CGPathAddLineToPoint(path,NULL, 100, 200);

CGPathAddLineToPoint(path,NULL, 100, 300);

CGPathAddLineToPoint(path,NULL, 200, 400);

   //沿着曲线移动

CGPathAddCurveToPoint(path,NULL,50.0,275.0,150.0,275.0,70.0,120.0);

CGPathAddCurveToPoint(path,NULL,150.0,275.0,250.0,275.0,90.0,120.0);

CGPathAddCurveToPoint(path,NULL,250.0,275.0,350.0,275.0,110.0,120.0);

CGPathAddCurveToPoint(path,NULL,350.0,275.0,450.0,275.0,130.0,120.0);

** animation.path=path;**

CGPathRelease(path);

animation.autoreverses = YES;

animation.repeatCount=MAXFLOAT;

animation.removedOnCompletion = NO;

animation.fillMode = kCAFillModeForwards;

animation.duration = 4.0f;

animation.timingFunction=[CAMediaTimingFunctionfunctionWithName:kCAMediaTimingFunctionEaseInEaseOut];

animation.delegate=self;

//调用
** [moveView.layer addAnimation:animation forKey:nil];**

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

推荐阅读更多精彩内容

  • 先看看CAAnimation动画的继承结构 CAAnimation{ CAPropertyAnimation { ...
    时间不会倒着走阅读 1,719评论 0 1
  • 在iOS实际开发中常用的动画无非是以下四种:UIView动画,核心动画,帧动画,自定义转场动画。 1.UIView...
    请叫我周小帅阅读 3,215评论 1 23
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥ios动画全貌。在这里你可以看...
    每天刷两次牙阅读 8,613评论 6 30
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌。在这里你可以看...
    F麦子阅读 5,161评论 5 13
  • 我们大家都有这样的共同感受这种星际间存在万有引力一样。失败,犹如引力通过错误牵拉着每一个交易者,如果我们无所作为。...
    指尖的阳光_fc32阅读 243评论 0 0