У меня есть AuthViewController, который представляет MainViewController следующим образом:
let mainVC = MainViewContoller()
mainVC.modalTransitionStyle = .CrossDissolve
authVC.presentViewController(mainVC, animated: true, completion: nil)
Я хочу, чтобы AuthViewController скрывал строку состояния, а MainViewController - так:
AuthViewController {
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return .LightContent
}
override func preferredStatusBarUpdateAnimation() -> UIStatusBarAnimation {
return .Fade
}
override func prefersStatusBarHidden() -> Bool {
return false
}
}
MainViewController {
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return .LightContent
}
override func preferredStatusBarUpdateAnimation() -> UIStatusBarAnimation {
return .Fade
}
override func prefersStatusBarHidden() -> Bool {
return false
}
}
Появится строка состояния, однако переопределение preferredStatusBarUpdateAnimation() игнорируется. Строка состояния отображается без анимации.
Мне удалось получить анимацию, установив prefersStatusBarHidden на MainViewController на true до viewDidAppear, а затем вызывая это:
UIView.animateWithDuration(0.3) {
self.setNeedsStatusBarAppearanceUpdate()
}
Я не хочу называть это каждый раз. Что я делаю неправильно?