如何更改图层中间动画的setPosition

时间:2013-07-03 17:47:23

标签: objective-c position core-animation

我目前正在设置对象position的动画,以50为间隔在x轴上移动。但是,我希望能够在某些情况下停止对象并更改其动画,例如用户铺设在它前面的一个物体。

我必须使用[self.layer setPosition:newPosition],否则在动画完成后对象会弹回原来的位置。如果删除对象以使其停止,则在提交新动画之前,对象会弹回setPosition点。如何使其停止并停留在原处并执行新动画?

1 个答案:

答案 0 :(得分:1)

您正在使用隐式图层动画来设置图层位置的动画。要在动画完成之前取消动画,您可以使用:

[self.layer removeAllAnimations];

这会产生将图层跳到最终动画位置的副作用。如果您希望图层停在原处,那么您需要获得当前的presentationLayer位置。

CGPoint currentAnimationPosition = self.presentationLayer.position;
self.layer.position = currentAnimationPosition;
[self.layer removeAllAnimations];

要执行新动画,您只需像以前一样在图层上设置新位置。