在iOS Swift上隐藏状态栏

时间:2020-06-18 07:19:22

标签: ios swift iphone xcode statusbar

在我的应用程序中,对于特定屏幕,我需要隐藏状态栏。我的屏幕层次结构是:

MainScreen -> ScreenA -> ScreenB -> Screenc

在我的 Screenc 中,我需要隐藏状态栏。所以我是这样的:

 override var prefersStatusBarHidden: Bool {
        return true
    }

一切正常。但是,当我从Screenc退回时,我的ScreenB, ScreenA状态栏和导航栏是重叠的。像我的ScreenB, ScreenA titleright bar button一样,它们都与状态栏重叠。但是我的状态栏也显示在ScreenB, ScreenA中。

不确定为什么会这样。在我的plist文件中,我有:

View controller-based status bar appearance : YES

我无法将其更改为“否”。因为在我的应用程序中,我正在使用将肖像固定到特定的视图控制器。

我如何解决这些问题的任何解决方案?

2 个答案:

答案 0 :(得分:1)

您可以做的是在“出现和消失”中显示和隐藏

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

    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
        navigationController?.isNavigationBarHidden = false
    }

答案 1 :(得分:0)

在viewDidLoad()函数中添加

self.navigationController?.isNavigationBarHidden = true

在先前的ViewController的viewDidAppear方法上添加

self.navigationController?.isNavigationBarHidden = false