要想使视图可以沿着贝塞尔曲线运动,要用到关键帧动画CAKeyframeAnimation
我们可以在一个button的点击事件中加入如下代码
CAKeyframeAnimation *animation = [CAKeyframeAnimation animation];
//设置动画属性,因为是沿着贝塞尔曲线动,所以要设置为position
animation.keyPath = @"position";
//设置动画时间
animation.duration = 2;
// 告诉在动画结束的时候不要移除
animation.removedOnCompletion = NO;
// 始终保持最新的效果
animation.fillMode = kCAFillModeForwards;
//贝塞尔曲线
UIBezierPath *circlePath = [UIBezierPath bezierPathWithArcCenter:CGPointMake(200, 200) radius:60 startAngle:M_PI endAngle:M_PI_2 clockwise:true];
// 设置贝塞尔曲线路径
animation.path = circlePath.CGPath;
// 将动画对象添加到视图的layer上
[_greenView.layer addAnimation:animation forKey:nil];
如上代码所示,就能使得这个greenView视图能够跟着贝塞尔曲线运动
其中
// 告诉在动画结束的时候不要移除
animation.removedOnCompletion = NO;
// 始终保持最新的效果
animation.fillMode = kCAFillModeForwards;
这两行代码让动画结束后不会回到原来的位置,这是第一种方法
我们也可以通过在动画结束后直接修改视图的frame或者center到运动结束的那个点也行
网友评论