【问题标题】:Showing NavigationBar and StatusBar when pushed from a view controller从视图控制器推送时显示导航栏和状态栏
【发布时间】:2016-12-19 15:20:48
【问题描述】:

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

在 viewDidLoad 中,我这样做:

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

如果我在我的应用程序中点击其中一个选项卡项,然后返回到显示视图控制器的同一选项卡,则导航栏将正确显示而没有黑条:

知道如何正确显示导航栏吗?

【问题讨论】:

    标签: swift swift3 uinavigationbar uistatusbar


    【解决方案1】:

    我是这样做的:

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

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

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

    override var prefersStatusBarHidden: Bool {
        return true
    }
    

    显然,根据需要设置 true/false。通过在每个视图控制器中执行此操作,您可以确保事情按照您想要的方式运行(true == hide)。

    【讨论】:

    • 我通过在第一个 viewController 中的 prefersStatusBarHidden 中返回 true 来尝试您的解决方案,但这并没有隐藏状态栏。我必须打电话给UIApplication.shared.setStatusBarHidden 才能隐藏它。
    • 嗯。这个对我有用。它在启动屏幕上不起作用 - 该屏幕的功能极其有限。我还假设您已经注释掉了与状态栏行为相关的所有其他代码(甚至可能在 AppDelegate 中)。
    猜你喜欢
    • 1970-01-01
    • 2019-03-11
    • 2014-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-25
    • 2011-10-31
    • 1970-01-01
    相关资源
    最近更新 更多