Безопасная зона и панель навигации - PullRequest
0 голосов
/ 11 декабря 2018

Я пытаюсь добавить панель навигации в xib, но панель навигации не заполняется до верха, она оставляет пространство над ней там, где есть выемка камеры.Смотрите скриншот ниже:

enter image description here

Вот мои ограничения для панели навигации:

enter image description here

Я также пытался установить верхнее ограничение для панели навигации на Superview.Это результат этого:

enter image description here

Я не могу поверить, что это так сложно.Что мне здесь не хватает?

Ответы [ 2 ]

0 голосов
/ 19 июля 2019

Имел ту же проблему и смог найти решение.Что вам нужно сделать, это установить делегат, реализовать positionForBar: в делегате, возвращающем UIBarPositionTopAttached

- (UIBarPosition)positionForBar:(id <UIBarPositioning>)bar
{
    return UIBarPositionTopAttached;
}

0 голосов
/ 11 декабря 2018

Вы почти никогда не хотите добавлять UINavigationBar непосредственно в view контроллера представления, скорее вы хотите встроить свой контроллер представления в UINavigationController.Если вы используете раскадровки, вы можете сделать это, выбрав контроллер представления, щелкнув меню «Редактор» -> «Встроить» -> «Контроллер навигации».

Если вы не используете раскадровки, вы можете создать контроллер представления и установить его в качестве корневого контроллера представления для UINavigationController.Затем представьте навигационный контроллер или вставьте этот навигационный контроллер в контроллер вкладок или сплит-контроллер.

let mySpecialViewController = MySpecialViewController()
let navigationController = UINavigationController(rootViewController: mySpecialViewController)
present(navigationController, animated: true)

Этот код выше необходимо вызывать из подкласса UIViewController.

Если вы делаете это от своего делегата приложения для настройки начального контроллера представления вашего приложения, вы можете сделать это так:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    let mySpecialViewController = MySpecialViewController()
    let navigationController = UINavigationController(rootViewController: mySpecialViewController)
    window?.rootViewController = navigationController
    window?.makeKeyAndVisible()
    return true
}
...