Панель навигации не закрывает строку состояния на iPhone X

У меня есть простой контроллер представления с видом (картой), прикрепленным к его супервизору. Представление встроено в контроллер навигации, но панель навигации начинается под безопасной областью (под строкой состояния) на 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)

person Jacobo Koenig    schedule 05.06.2018    source источник
comment
просто для пояснения: как вы думаете, что это делает: UINavigationBar.appearance()?   -  person vikingosegundo    schedule 05.06.2018
comment
Доступ и изменение внешнего вида панели навигации в представлениях   -  person Jacobo Koenig    schedule 05.06.2018
comment
а UINavigationBar вот что? объект нарисован как черный прямоугольник на вашем скриншоте?   -  person vikingosegundo    schedule 05.06.2018
comment
Я совершенно уверен, что вам каким-то образом удалось добавить вторую панель навигации на свой экран.   -  person vikingosegundo    schedule 05.06.2018
comment
Не уверен, как это могло случиться   -  person Jacobo Koenig    schedule 05.06.2018
comment
вы используете файлы xib?   -  person vikingosegundo    schedule 05.06.2018
comment
не нестандартные   -  person Jacobo Koenig    schedule 05.06.2018
comment
как встроить свой vc в контроллер навигации?   -  person vikingosegundo    schedule 05.06.2018
comment
Просто выделил его и: Редактор ›Вставить в› Контроллер навигации. Я также пропустил использование appearance () и получил доступ к navController.navigationBar из контроллера представления.   -  person Jacobo Koenig    schedule 05.06.2018
comment
вы когда-нибудь перетаскивали какой-нибудь вид в видеомагнитофон?   -  person vikingosegundo    schedule 05.06.2018


Ответы (1)


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

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

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

let mapViewController = UINavigationController(rootViewController: MapViewController())

(при условии, что ваша карта называется MapViewController)

person Paolo    schedule 05.06.2018
comment
Я встраиваю свой контроллер представления в контроллер навигации и меняю его внешний вид в AppDelegate. - person Jacobo Koenig; 05.06.2018