перейти к завершению мгновенно, если анимация не затронута - PullRequest
0 голосов
/ 11 июля 2019

Я использую функцию UIView.animated(withDuration:animations:completion:), и иногда бывают случаи, когда анимация не затрагивается в блоке анимаций

Например:

Давайте предположим, что у меня есть viewframe.origin.y уже равно 0.

Теперь анимация, которую я не хочу делать, состоит в следующем:

UIView.animate(
    withDuration: 1,
    animations: {
        self.view.frame.origin.y = 0
    }
    completion: { completed in
        guard completed else { return }
        // do something
    }
)

Блок завершения вызывается через 1 секунду вместо мгновенного.

Как я могу сделать так, чтобы блок завершения вызывался мгновенно, если в блоке анимации нет анимации, затронутой без какой-либо длительности.

Ответы [ 2 ]

2 голосов
/ 11 июля 2019

Это то, с чем вам следует справиться самостоятельно, animations этого не узнает, вы можете сравнить как

 if self.view.frame.origin.y != someValue {
    // do animation
 }
 else {
    // run some other code
 }
1 голос
/ 11 июля 2019

Заменить

withDuration: 1,

на

withDuration: 0.01,

(или даже меньше)

...