2017-07-19 28 views
-1

因此,当视图加载时,我将动画按钮移动到屏幕上的特定点(CGPoint)。我还添加了一个swipeGestureRecogniser,使得如果用户向左滑动,则动画将停止,并且将开始一个新动作,将该按钮转到不同的CGPoint。我通过调用按钮上的removeAllAnimations()方法来完成此操作。问题是,当用户向左滑动时,该按钮将完成第一个动画,而没有动画。所以它不会停止并开始新的动画,而是跳转到第一个动画的结尾,然后继续到下一个动画。有没有办法停止第一个动画并无缝启动下一个动画?Swift - removeAllAnimations() - 一个动画在另一个之后

这是代码:

Code

+0

添加两个动画 –

+0

我想这是因为你使用的UIView动画之间有一些延迟,removeAllAnimations只与CALayer的动画工作。因此,如果您将这些动画添加为CALayer,swipeLeft手势将移除所有动画。 –

回答

1

它的工作如预期。当您拨打removeAllAnimations()时,只有一个动画需要移除 - 第二个将会添加到第一个完成块中。因此,而不是嵌套的动画,你可以尝试这样的事情:

// first animation 
UIView.animate(withDuration: 5, delay: 0, options: .curveLinear, animations: { /... }, completion: { //... }) 
// second animation 
UIView.animate(withDuration: 5, delay: 5, animations: { /... }) 
相关问题