Swift 与 Spring 中的链接动画无法正常工作

Chaining animations in Swift with Spring won't work properly

我试过使用 Spring 链接动画,但遗憾的是,文档对链接动画 (https://github.com/MengTo/Spring) 的理解很不清楚。

我也看到有人问过同样的问题,但不知何故,他们的回答对我不起作用。 (, https://github.com/MengTo/Spring/issues/123)

我试过像 Spring 示例中那样使用链条:

func startAnimationSpringChain()  {
    self.springView.animation = "slideRight"
    self.springView.animateNext {
        self.springView.animation = "fadeOut"
        self.springView.animate()
    }
}

这里第一个动画有效,但第二个动画是“fadeOut”和反向播放的“slideRight”的组合。

然后我尝试使用 PromiseKit 的 Promises (https://github.com/mxcl/PromiseKit):

func startAnimationPromise()  {
    firstly {
        self.firstAnimation()
        }.done {
            self.secondAnimation()
    }
}

func firstAnimation () -> Promise<Void>{
    return Promise { seal in
        self.springView.animation = "SlideRight"
        self.springView.animate()
        seal.fulfill(())
    }
}

func secondAnimation() -> Promise<Void>{
    return Promise { seal in
        self.springView.animation = "fadeOut"
        self.springView.animate()
        seal.fulfill(())
    }
}

这导致只非常快地播放第二个动画“fadeOut”。

谁能解释一下这三个函数:

animateNext { ... }
animateTo()
animateToNext { ... }

因为我很难理解他们到底在做什么。

感谢您的帮助,我非常感谢,我很高兴收到有关我的代码的各种建议! :)

最佳

我使用 animateToNext 方法链接动画。似乎 animateNext 没有等待上一个动画结束。像这样:

self.springView.animation = Spring.AnimationPreset.SlideRight.rawValue
self.springView.animateToNext {
        self.springView.animation = Spring.AnimationPreset.FadeOut.rawValue
        self.springView.animate()
}

您还会看到 答案。

然而,当在一个动画链中使用它们时,似乎并非所有动画都能正常工作。