Панель навигации, не отображающая строку состояния на iPhone X

Jacobo Koenig спросил: 12 мая 2018 в 05:10 в: ios

У меня есть простой контроллер представления с видом (картой), прикрепленным к его супервизору. Представление встроено в навигационный контроллер, но панель навигации начинается под безопасной областью (ниже строки состояния) на iPhone X. В идеале я бы хотел, чтобы панель находилась под строкой состояния (не ниже нее), когда отображалась на iPhone X. Как я могу это сделать?

Вот как настраивается панель чтобы сделать его полупрозрачным:

//Design Set Up
let navBar = UINavigationBar.appearance()
navBar.setBackgroundImage(UIImage(), for: .default)
navBar.backgroundColor = UIColor(displayP3Red: 0, green: 0, blue: 0, alpha: 0.5)

1 ответ

Paolo ответил: 12 мая 2018 в 05:32

Вы должны встроить контроллер представления в UINavigationController, а не использовать только UINavigationBar. Таким образом, вы автоматически получите панель навигации с навигационным контроллером, и она будет полностью расширяться до верхней части экрана.

https://developer.apple.com/documentation/uikit/uinavigationcontroller

Вы можете добавить его в раскадровку или если вы используете код, что-то вроде:

let mapViewController = UINavigationController(rootViewController: MapViewController())

(если ваша карта называется MapViewController)

Jacobo Koenig ответил: 12 мая 2018 в 05:34
Я внедряю контроллер своего вида на контроллер навигации и меняю его внешний вид на AppDelegate