从视图控制器推送时显示NavigationBar和StatusBar

时间:2016-12-19 15:20:48

标签: swift swift3 uinavigationbar uistatusbar

我有一个隐藏navigationBar和statusBar的视图控制器。当viewController推送到一个新的viewController时,我想要显示navigationBar和statusBar,结果是这样的:

enter image description here

在viewDidLoad中,我这样做:

self.navigationController?.navigationBar.barStyle = .default
self.navigationController?.setNavigationBarHidden(false, animated: false)
UIApplication.shared.setStatusBarHidden(false, with: UIStatusBarAnimation.none)

如果我点击应用程序中的某个标签项,然后返回显示视图控制器的同一选项卡,导航栏会正确显示,而不显示黑条:

enter image description here

知道如何正确显示navigationBar吗?

1 个答案:

答案 0 :(得分:1)

我是这样做的:

导航栏(在每个视图控制器中设置此项)

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    self.navigationController?.isNavigationBarHidden = true
}

状态栏(在每个视图控制器中设置此项)

override var prefersStatusBarHidden: Bool {
    return true
}

显然,根据需要设置true / false。通过在每个视图控制器中执行此操作,您可以确保事物的行为符合您的要求(true == hide)。