因此,当视图加载时,我动画一个按钮移动到屏幕上的特定点(CGPoint
)。我还添加了一个swipeGestureRecogniser,以便在用户向左滑动时,动画将停止,并且将启动一个新的按钮到另一个CGPoint。我是通过调用按钮上的removeAllAnimations()
方法完成的。问题是当用户向左滑动时,该按钮在没有动画的情况下完成第一个动画。因此它不会停止并启动新动画,而是跳转到第一个动画的结尾,然后继续下一个动画。有没有办法停止第一个动画并无缝启动下一个?
这是代码:
答案 0 :(得分:1)
它按预期工作。在您调用removeAllAnimations()
时,只有一个动画要删除 - 第二个动画将添加到第一个完成块中。因此,您可以尝试类似的方式来代替嵌套动画:
// first animation
UIView.animate(withDuration: 5, delay: 0, options: .curveLinear, animations: { /... }, completion: { //... })
// second animation
UIView.animate(withDuration: 5, delay: 5, animations: { /... })