Я создаю приложение для iOS, цель развертывания 12.1, swift 4.2. Приложение использует контейнерные представления и имеет панель навигации в верхней части основных экранов, желательно прямо под строкой состояния. В раскадровке экрана запуска я ограничил Navigation Bar.top значением Safe.Area.Top. Это прекрасно работает. Но после того, как я установил containerViewController как rootViewController в AppDelegate, панель навигации, как я ограничил ее в Main.storyboard (Navigation Bar.top в Safe.Area.Top), появляется намного ниже, чем она должна быть.
Единственный способ, которым я могу заставить панель навигации отображаться прямо под строкой состояния, — это создать собственный фрейм для моего окна в AppDelegate с отрицательным значением y — и это определенно НЕ то решение, с которым мне удобно.
Кажется, это создает слишком низкое значение y:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
window = UIWindow(frame: UIScreen.main.bounds)
let containerViewController = ContainerViewController()
window!.rootViewController = containerViewController
window!.makeKeyAndVisible()
return true
}
И это вопиющий хак, который приближает панель навигации к тому месту, где она должна быть:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
//window = UIWindow(frame: UIScreen.main.bounds)
let hackedFrame = CGRect(x: 0, y: -44, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height)
window = UIWindow(frame: hackedFrame)
let containerViewController = ContainerViewController()
window!.rootViewController = containerViewController
window!.makeKeyAndVisible()
//window!.windowLevel = UIWindow.Level.statusBar
return true
}
Снимки экрана:
Я, вероятно, упускаю что-то действительно очевидное здесь, но я был бы признателен за любую помощь, которую может оказать любой.
Спасибо.