为什么在首次启动时我的导航栏位于状态栏下

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么在首次启动时我的导航栏位于状态栏下相关的知识,希望对你有一定的参考价值。

为什么当我使用空视图控制器创建导航控制器时我会收到导航栏的奇怪行为?

这就是我创建导航控制器的方法。

init(
    window: UIWindow,
    keystore: Keystore,
    navigationController: UINavigationController = UINavigationController()
) {
    self.navigationController = navigationController
    self.keystore = keystore
    super.init()
    window.rootViewController = navigationController
    window.makeKeyAndVisible()
}

比我简单做:

func start() {
    let x = UIViewController()
    x.view.backgroundColor = UIColor.red
    navigationController.setViewControllers([x], animated: true)
}

我收到:enter image description here但在下一个应用程序启动一切都很好。

enter image description here

答案

可能就是这种情况,因为您在应用程序启动后设置了NavigationController。

我建议在AppDelegate中设置NavigationController。

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        window = UIWindow(frame: UIScreen.main.bounds)

        let firstViewController = UIViewController()
        let navigationController = UINavigationController(rootViewController: firstViewController)

        window?.rootViewController = navigationController
        window?.makeKeyAndVisible()
        return true
    }
}

以上是关于为什么在首次启动时我的导航栏位于状态栏下的主要内容,如果未能解决你的问题,请参考以下文章

横向播放视频后状态栏下的导航栏

导航栏颜色不在状态栏下

当列表位于导航栏下方时,如何摆脱出现在导航栏顶部的图层?

一段时间后,ios7 UINavigationBar 在状态栏下停止扩展

为啥 wkwebview 隐藏在导航栏下

iOS TableViewController 滚动离开状态栏下的内容和导航栏