我使用iOS核心动画“CABasicAnimation”为UIImageView设置动画,所有工作都适合我,但唯一的问题是当完成动画后动画到位置回到原来的位置。我怎么能克服这个?我需要保持UIImageView移动位置。iOS“CABasicAnimation”在动画完成后将组件移动到原始位置
注:我已经看到了几个有关这方面的成功答案的问题,但我不知道为什么我的工作不像他们说的那样工作。
After rotating a CALayer using CABasicAnimation the layer jumps back to it's unrotated position
这里是我的示例代码,
CGPoint endPt = CGPointMake(160, 53);
CABasicAnimation *anim5 = [CABasicAnimation animationWithKeyPath:@"position"];
[anim5 setBeginTime:CACurrentMediaTime()+0.4];
anim5.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];
anim5.fromValue = [NSValue valueWithCGPoint:imgRef.layer.position];
anim5.toValue = [NSValue valueWithCGPoint:endPt];
anim5.duration = 1.5;
anim5.speed = 2;
[imgRef.layer addAnimation:anim5 forKey:@"position"];
//this is what other answers ask to do
[anim5 setFillMode:kCAFillModeForwards];
[anim5 setRemovedOnCompletion:NO];
BTW [imgRef.layer setPosition:CGPointMake(160, 53)];
不会帮我,因为我推迟动画与4毫秒。
有一个更好的(更简单)的方法:http://oleb.net/blog/2012/11/prevent-caanimation-snap-back/ – omz
谢谢,omz,你的解决方案修复我的问题 –
我也谢谢! – skinsfan00atg