【问题标题】:Swift - removeAllAnimations() - One animation after the otherSwift - removeAllAnimations() - 一个接一个的动画
【发布时间】:2017-07-19 11:14:10
【问题描述】:

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

这是代码:

【问题讨论】:

  • 在两个动画之间添加一些延迟
  • 我认为这是因为您使用的是 UIView 动画,removeAllAnimations 仅适用于 CALayer 动画。因此,如果您将这些动画添加为 CALayer,swipeLeft 手势将删除所有动画。

标签: ios swift animation uiviewanimation


【解决方案1】:

它按预期工作。在您调用removeAllAnimations() 时,只有一个动画要删除 - 第二个动画将添加到第一个的完成块中。因此,您可以尝试类似的方法,而不是嵌套动画:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-24
    • 1970-01-01
    • 1970-01-01
    • 2011-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多