Цепная анимация в Swift с Spring не будет работать должным образом - PullRequest
0 голосов
/ 28 августа 2018

Я пробовал связывать анимации с помощью Spring, но, к сожалению, в документах довольно неясно о связывании анимаций (https://github.com/MengTo/Spring).

Я также видел, что некоторые люди задавали тот же вопрос, но почему-то их ответы не сработали для меня. ( Spring Meng Для анимации цепочек? , 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».

Затем я попытался использовать Обещания:

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 голосов
/ 27 сентября 2018

Я использую animateToNext метод для создания цепочек анимаций. Кажется, animateNext не ждет окончания предыдущей анимации. Примерно так:

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

Вы также видите этот ответ.

Однако кажется, что не все анимации могут работать должным образом при использовании их в одной цепочке анимаций.

...