在 iOS Swift 上隐藏状态栏

Hide status bar on iOS Swift

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

MainScreen -> ScreenA -> ScreenB -> Screenc

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

 override var prefersStatusBarHidden: Bool {
        return true
    }

一切正常。但是当我从 Screenc 向后推时,我的 ScreenB, ScreenA 状态栏和导航栏重叠。像我的ScreenB, ScreenAtitleright bar button,都和状态栏重叠。但是我的状态栏也显示在 ScreenB, ScreenA.

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

View controller-based status bar appearance : YES

我无法将其更改为否。因为在我的应用程序中,我正在使用将肖像固定到特定 viewcontroller。

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

在viewDidLoad()函数中添加

self.navigationController?.isNavigationBarHidden = true

并且在您之前的ViewController viewDidAppear 方法中添加

self.navigationController?.isNavigationBarHidden = false

你可以做的就是在出现和消失中显示和隐藏

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

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