Как вызвать метод только после завершения другого метода в ViewDidLoad - PullRequest
0 голосов
/ 20 февраля 2020

Я пытаюсь создать приложение, в котором при запуске объект A начинает исчезать.

Сразу после полного исчезновения объекта A я бы хотел, чтобы объект B начал исчезать.

Я попытался поместить приведенный ниже код в метод ViewDidLoad, но они оба работают одновременно. Любая идея о том, как сделать один запуск после другого, начиная после начальной загрузки?

ObjectA.isHidden = false
    UIView.animate(withDuration: 5.0, animations: { () -> Void in
         self.Fader.alpha = 0
        })

ObjectB.isHidden = false
    UIView.animate(withDuration: 1.0, animations: { () -> Void in
         self.Intro.alpha = 0
        })

Ответы [ 2 ]

1 голос
/ 20 февраля 2020

Вы можете их вложить

UIView.animate(withDuration: 5.0, delay: 0.0, options: [.curveLinear,.allowUserInteraction], animations: { 
    self.fader.alpha = 0 
 }) { (fin) in 
      self.objectB.isHidden = false
      UIView.animate(withDuration: 1.0, animations: { () -> Void in
        self.Intro.alpha = 0
      }) 
}
0 голосов
/ 20 февраля 2020

Вложение анимации в первый блок завершения анимации - это прекрасно. Но для группировки нескольких анимаций стоит рассмотреть CAAnimation Groups.

вот учебник Ray Wenderlich, который проходит простую CAAnimationGroup

Документация Apple имеет отличный пример, но вы ДОЛЖНЫ указать beginTime для каждого анимация (в противном случае каждая анимация запускается одновременно):

let fadeOut = CABasicAnimation(keyPath: "opacity")
fadeOut.fromValue = 1
fadeOut.toValue = 0
fadeOut.duration = 1
fadeOut.beginTime = 0.0

let expandScale = CABasicAnimation()
expandScale.keyPath = "transform"
expandScale.valueFunction = CAValueFunction(name: kCAValueFunctionScale)
expandScale.fromValue = [1, 1, 1]
expandScale.toValue = [3, 3, 3]
expandScale.beginTime = fadeOut.beginTime + fadeOut.duration

let fadeAndScale = CAAnimationGroup()
fadeAndScale.animations = [fadeOut, expandScale]
fadeAndScale.duration = fadeOut.duration + expandScale.duration
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...