使用Spring在Swift中链接动画无法正常工作

时间:2018-08-28 08:35:56

标签: swift animation promise ios-animations spring-swift

我已经尝试过使用Spring链接动画,但是很遗憾,文档尚不清楚链接动画(https://github.com/MengTo/Spring)。

我还看到有些人问了同样的问题,但是不知何故,他们的答案对我不起作用。 (Spring Meng To chaining animations?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”的组合。

然后我尝试使用Promises:

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 { ... }

因为我很难理解它们的确切功能。

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

最佳

1 个答案:

答案 0 :(得分:0)

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

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

您还会看到this的答案。

但是,当在一个动画链中使用它们时,似乎并不是所有的动画都能正常工作。