【问题标题】:Chaining animations in Swift with Spring won't work properly在 Swift 中使用 Spring 链接动画将无法正常工作
【发布时间】:2019-02-02 19:55:09
【问题描述】:

我尝试过使用 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”的组合。

然后我尝试使用 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 { ... }

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

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

最好的

【问题讨论】:

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


    【解决方案1】:

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

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

    您还会看到this 的答案。

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

    【讨论】:

    • 非常感谢您的帮助! :)
    猜你喜欢
    • 2016-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-27
    • 2017-04-30
    • 1970-01-01
    相关资源
    最近更新 更多