Строка состояния остается скрытой после отклонения модального вида и появляется через несколько секунд
У меня очень странное поведение:
У меня есть приложение с контроллером навигации (панель навигации), где отображается строка состояния. Затем я представляю контроллер вида (сканер штрих-кода с использованием камеры), где я хочу скрыть строку состояния, поэтому я реализовал:
override func prefersStatusBarHidden() -> Bool {
return true
}
Когда я закрываю модально представленный вид, используя
self.dismissViewControllerAnimated(true, completion: nil)
представление исчезает, а строка состояния остается скрытой, хотя rootviewcontroller реализует
override func prefersStatusBarHidden() -> Bool {
return false
}
Но через несколько секунд строка состояния появляется автоматически!?
Я решение здесь, в Stackru, которое я попробовал:
UIApplication.sharedApplication().setStatusBarHidden(false, withAnimation: UIStatusBarAnimation.Fade)
self.dismissViewControllerAnimated(true, completion: nil)
Но это ничего не изменило для меня.
Может быть, я могу сделать обновление в rootview в viewDidAppear??
2 ответа
Вы возможно звоните dismissViewControllerAnimated
из фоновой темы?
Если это так, попробуйте обернуть вызов (и любые другие вызовы UIKit, поскольку он не является потокобезопасным) в обратном вызове GCD в основную очередь следующим образом:
dispatch_async(dispatch_get_main_queue()) {
self.dismissViewControllerAnimated(true, completion: nil)
}
Вам, вероятно, нужно позвонить setNeedsStatusBarAppearanceUpdate
на вашем контроллере представления:
Вызывайте этот метод, если изменяются атрибуты строки состояния контроллера представления, такие как скрытый / скрытый статус или стиль. Если вы вызываете этот метод в блоке анимации, изменения анимируются вместе с остальной частью блока анимации.
Как правило, это делается в viewDidLoad
, но в вашем случае, вероятно, лучше сделать это в viewDidAppear
так как ваше представление уже загружено и вы отклоняете представление дальше вниз по иерархии представлений. Попробуй это:
override func viewDidAppear(animated: Bool) {
self.setNeedsStatusBarAppearanceUpdate()
}