CAKeyframeAnimation动画关键帧动画原路返回的坑

今天需要做一个动画,内容是:一条小鱼根据一条曲线轨迹运动

做这个动画想到了用UIBezierPath贝塞尔曲线绘制运动轨迹,然后用CAKeyframeAnimation做动画帧来实现。

动画倒是实现了,但在实现的时候遇到个比较大条的问题就是小鱼沿着绘制的运动轨迹移动完成之后会沿着原路径返回。

查文档看了下需要removedOnCompletionfillMode这两个属性配合使用:

keyframeAnimation.removedOnCompletion = NO;
keyframeAnimation.fillMode = kCAFillModeForwards;

结果还是不行。望山各种查资料也是这种答案。

最后无奈觉得会不会是提前close了贝塞尔曲线导致的,位置调换,果然就可以了。

UIBezierPath *movePath = [UIBezierPath bezierPath];
/**/
[movePath moveToPoint:startPoint];
[movePath addQuadCurveToPoint:endPoint controlPoint:controlPoint];

CAKeyframeAnimation *keyframeAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"];
keyframeAnimation.path = movePath.CGPath;
keyframeAnimation.removedOnCompletion = NO;
keyframeAnimation.fillMode = kCAFillModeForwards;
[_fishView.layer addAnimation:keyframeAnimation forKey:nil];

[movePath closePath];

还是基础太差,找个时间要恶补了。

你可能感兴趣的:(CAKeyframeAnimation动画关键帧动画原路返回的坑)