我目前正在设置对象position
的动画,以50为间隔在x轴上移动。但是,我希望能够在某些情况下停止对象并更改其动画,例如用户铺设在它前面的一个物体。
我必须使用[self.layer setPosition:newPosition]
,否则在动画完成后对象会弹回原来的位置。如果删除对象以使其停止,则在提交新动画之前,对象会弹回setPosition
点。如何使其停止并停留在原处并执行新动画?
答案 0 :(得分:1)
您正在使用隐式图层动画来设置图层位置的动画。要在动画完成之前取消动画,您可以使用:
[self.layer removeAllAnimations];
这会产生将图层跳到最终动画位置的副作用。如果您希望图层停在原处,那么您需要获得当前的presentationLayer
位置。
CGPoint currentAnimationPosition = self.presentationLayer.position;
self.layer.position = currentAnimationPosition;
[self.layer removeAllAnimations];
要执行新动画,您只需像以前一样在图层上设置新位置。