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()
}
您还会看到 答案。
然而,当在一个动画链中使用它们时,似乎并非所有动画都能正常工作。
我试过使用 Spring 链接动画,但遗憾的是,文档对链接动画 (https://github.com/MengTo/Spring) 的理解很不清楚。
我也看到有人问过同样的问题,但不知何故,他们的回答对我不起作用。 (
我试过像 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()
}
您还会看到
然而,当在一个动画链中使用它们时,似乎并非所有动画都能正常工作。