首页 > 解决方案 > 如何使导航栏符合安全区域?

问题描述

我从没有导航栏的屏幕移动到有导航栏的屏幕。转到导航栏屏幕时,该栏不包含在任何安全区域约束中,并且与 iPhone X 上的状态栏重叠。我寻找了一个解决方案,但对我没有任何帮助。如何使导航栏符合 iPhone X 上的安全区域指南,使其不会重叠?另外,它的高度似乎太短了,但我想这可以通过约束来解决。

提前致谢!

应用委托:

var window: UIWindow?
var navigationController: UINavigationController?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.
    window = UIWindow(frame: UIScreen.main.bounds)

    if let window = window{
        let mainVC = ViewController()
        navigationController = UINavigationController(rootViewController: mainVC)
        window.rootViewController = navigationController
        window.makeKeyAndVisible()
    }
    return true
}

这是我用来从 ViewController 移动到 AboutViewController 的方法:

    @objc private func infoButtonTap(){
    let aboutVC = AboutViewController()
    self.navigationController?.pushViewController(aboutVC, animated: true)
}

编辑:这就是它的样子: https ://imgur.com/syuQaUn

关于VC:

此行在 viewDidLoad 中:

        navigationController?.isNavigationBarHidden = false

使导航栏可见。

标签: swift

解决方案


如果你真的想让你的导航控制器在安全区域内。这是您的一种解决方案。

  1. 创建了一个 UIController 作为一切的基础控制器。让我们称之为SuperParentController

  2. 确保SuperParentController也是导航控制器的父级。

  3. 然后您可以为您操作内容和布局,SuperParentController以确保导航控制器按您的意愿定位。

我们有点使用这种策略来为我们的应用展示一个可以随时展示的通用横幅。


推荐阅读