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 от задержки).
Как это исправить?
Первоначальная проблема, которую я пытаюсь решить, заключается в presentViewController
(с animated: false
) до viewDidAppear
так, чтобы я мог показать пользователю LoginViewController
до того, как появится вид на контроллер сзади. Но оказывается, что я не могу позвонить presentViewController
в viewDidLoad
или же viewWillAppear
,
Так что мой обходной путь должен был бы установить LoginViewController
просматривают альфа до 0 и анимируют его до 1 (я знаю, это другой эффект, но это лучше, чем вызов presentViewController
в viewDidAppear
в результате чего есть главный контроллер, чтобы показать и через миллисекунду (not literally)
иметь LoginViewController
Появляется вид).