无法在iOS 11,Swift 4中的特定视图控制器中隐藏状态栏

问题描述 投票:2回答:6

我有一个通用的UIViewController,我想在其中隐藏状态栏。我有更多的视图控制器应该显示状态栏,但是这个特定的视图控制器应该隐藏状态栏。

我在UIViewController类中实现了以下方法:

override func viewDidLoad() {
    super.viewDidLoad()
    // FIXME: hide status bar
    var prefersStatusBarHidden: Bool {
        return true
    }
    setNeedsStatusBarAppearanceUpdate()
}

override func viewWillAppear(_ animated: Bool) {
    UIApplication.shared.isStatusBarHidden = true
}

override func viewWillDisappear(_ animated: Bool) {
    UIApplication.shared.isStatusBarHidden = false
}

在我的info.plist中,我设置了以下设置:

enter image description here

当我导航到该视图控制器并且仍然可见时,状态栏不会隐藏。

ios swift statusbar uistatusbar
6个回答
0
投票

在视图控制器中,您要隐藏状态栏,

viewWillAppear方法,UIApplication.shared.isStatusBarHidden = true

viewWillDisAppear方法,UIApplication.shared.isStatusBarHidden = false


6
投票

在视图控制器中覆盖prefersStatusBarHidden

override var prefersStatusBarHidden: Bool {
    return true
}

No设置值View Controller based status bar appearance,然后显示/隐藏特定视图控制器的状态栏。

enter image description here

结果如下:

enter image description here


0
投票
UIApplication.shared.isStatusBarHidden = true

在这个'isStatusBarHidden'的Setter之上,在iOS 9.0被弃用了

所以使用下面的代码它工作正常:)

override var prefersStatusBarHidden: Bool {
        return true
    }

0
投票

App Delegate swift 4.2

NotificationCenter.default.addObserver(self, selector: #selector(videoExitFullScreen), name:NSNotification.Name(rawValue: "UIWindowDidBecomeHiddenNotification") , object: nil)

@objc func videoExitFullScreen() {
        UIApplication.shared.setStatusBarHidden(false, with: .none)

    }

0
投票

要关闭某些视图控制器的状态栏但不是全部,请删除此info.plist条目(如果存在)或将其设置为YES:

View controller-based status bar appearance = YES

然后将此行添加到需要隐藏状态栏的每个视图控制器

override var prefersStatusBarHidden: Bool { return true } 

要关闭整个应用程序的状态栏,请将其添加到info.plist:

View controller-based status bar appearance = NO

这将允许“隐藏状态栏”按预期工作。检查项目在“部署信息”下的“常规”设置中的隐藏状态栏。

enter image description here


-1
投票

在ViewController中添加以下行

extension UIViewController {
    func prefersStatusBarHidden() -> Bool {
        return true
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.