UIView.animateWithDuration в viewDidAppear происходит мгновенно

Легко воспроизвести:

  • создать новое приложение
  • скопируйте этот код в ваш контроллер представления, который запускается при запуске

    class ViewController: UIViewController {
    
        override func viewDidAppear(animated: Bool) {
            UIView.animateWithDuration(5,
                delay: 5,
                options: UIViewAnimationOptions.CurveEaseInOut,
                animations: {
    
                }, completion: { finished in
                    print("finished")
                }
            )
        }
    
    }
    

"Готово" регистрируется немедленно, когда я ожидаю, что оно будет зарегистрировано через 10 секунд после запуска (5 от продолжительности анимации + 5 от задержки).

Как это исправить?

Первоначальная проблема, которую я пытаюсь решить, заключается в presentViewControlleranimated: false) до viewDidAppearтак, чтобы я мог показать пользователю LoginViewControllerдо того, как появится вид на контроллер сзади. Но оказывается, что я не могу позвонить presentViewController в viewDidLoad или же viewWillAppear,

Так что мой обходной путь должен был бы установить LoginViewControllerпросматривают альфа до 0 и анимируют его до 1 (я знаю, это другой эффект, но это лучше, чем вызов presentViewController в viewDidAppear в результате чего есть главный контроллер, чтобы показать и через миллисекунду (not literally) иметь LoginViewControllerПоявляется вид).

0 ответов

Другие вопросы по тегам