Анимации с постепенным исчезновением в цепочке не работают: только просмотр исчезает в - PullRequest
0 голосов
/ 14 июня 2019

Я пытаюсь использовать цепочку затухания в анимации, чтобы затухать в моих объектах по порядку.Сначала я делаю вид, затем остальные метки должны следовать его примеру.Метки находятся в виде стека с альфа-значением 1.0.Я убедился, что все остальные альфа-значения начинаются с нуля.Вот моя функция:

func fadeIn() {
    UIView.animate(withDuration: 0.5, delay: 0.0, options: UIView.AnimationOptions.curveEaseIn, animations: {
        self.view.alpha = 1.0
    }, completion: { finished in
        if finished {
            UIView.animate(withDuration: 0.5, delay: 0.0, options: UIView.AnimationOptions.curveEaseIn, animations: {
                self.gameOverLabel.alpha = 1.0
            }, completion: { finished in
                if finished {
                    UIView.animate(withDuration: 0.5, delay: 0.0, options: UIView.AnimationOptions.curveEaseIn, animations: {
                        self.scoreLabel.alpha = 1.0
                    }, completion: { finished in
                        if finished {
                            UIView.animate(withDuration: 0.5, delay: 0.0, options: UIView.AnimationOptions.curveEaseIn, animations: {
                                self.highScoreLabel.alpha = 1.0
                            }, completion: { finished in
                                if finished {
                                    UIView.animate(withDuration: 0.5, delay: 0.0, options: UIView.AnimationOptions.curveEaseIn, animations: {
                                        self.restartButton.alpha = 1.0
                                    }, completion: nil)
                                    //breakpoint set here
                                }
                            })
                        }
                    })
                }
            })
        }
    })
}

Я установил точку останова после того, как все анимации были завершены (как показано выше), и все значения альфа были 1.0.Тем не менее, устройство просто дает мне пустой белый экран.Что происходит?

PS Функция вызывается сразу после того, как этот контроллер представления представлен:

view.present(vc, animated: false, completion: {
    vc.fadeIn()
})

1 Ответ

0 голосов
/ 15 июня 2019

Попробуйте добавить опцию .layoutSubviews к вашей анимации. Как это:

UIView.animate(withDuration: 1.0, delay: 0.0, options: UIView.AnimationOptions.layoutSubviews, animations: {
    // animate here
})

Из документов Apple эта опция делает это:

Размещайте подпредставления во время коммита, чтобы они анимировались вместе со своим родителем.

Возможно, что подпредставления еще не выложены во время коммита из-за их представления.

...