Я хочу, чтобы один из моих нажатых viewControllers в стеке контроллера навигации был «полным экраном» - нет панели навигации и нет строки состояния. У меня есть этот код, который скрывает и показывает навигационную панель в одном из контроллеров отображения навигационного контроллера (я хочу, чтобы это было толкнул на весь экран):Скрытие навигационных и статусных баров только для одного UIViewController внутри стека UINavigationController
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.navigationController?.setNavigationBarHidden(true, animated:animated)
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
self.navigationController?.setNavigationBarHidden(false, animated:animated)
}
В то же ViewController я также Скрытие Строка состояния с этим:
override var prefersStatusBarHidden: Bool {
return true
}
Он скрывается и показывается, как ожидался, но проблема в том, что я получаю черную полосу на переходе при нажатии этой точки зрения контроллера и назад от него (см изображения).
Нажмите на этот контроллер: Push to this controller
И снова от этого контроллера (обратно кнопка):
Оказывается, это происходит из-за функции prefersStatusBarHidden Удаление это решает проблему.
Код для показа/скрытия панели навигации взята из: https://stackoverflow.com/a/2406167/4207465
и на основе библиотеки для разработчиков Apple: «Отображение и скрытие панели навигации - Когда панель навигации используется в сочетании с навигационный контроллер, вы всегда используете метод setNavigationBarHidden: анимированный: метод UINavigationController для отображения и скрытия навигационной панели ... »
Не знаете, почему это происходит, Спасибо за помощь!
Оказывается, это происходит из-за prefersStatusBarHidden Удаление это решает проблему, исследуя почему .. –