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

时间:2018-03-16 10:47:14

标签: ios swift statusbar uistatusbar

我有一个通用的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

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

7 个答案:

答案 0 :(得分:5)

在视图控制器中覆盖prefersStatusBarHidden

override var prefersStatusBarHidden: Bool {
    return true
}

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

enter image description here

结果如下:

enter image description here

答案 1 :(得分:0)

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

使用viewWillAppear方法,UIApplication.shared.isStatusBarHidden = true

viewWillDisAppear方法中,UIApplication.shared.isStatusBarHidden = false

答案 2 :(得分:0)

UIApplication.shared.isStatusBarHidden = true

isStatusBarHidden的二传手在iOS 9.0中已弃用

因此使用下面的代码可以正常工作:)

override var prefersStatusBarHidden: Bool {
        return true
    }

答案 3 :(得分:0)

应用代理 迅速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)

    }

答案 4 :(得分:0)

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

Class<T>

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

View controller-based status bar appearance = YES

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

override var prefersStatusBarHidden: Bool { return true } 

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

enter image description here

答案 5 :(得分:0)

在Swift 5中

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .default
}

答案 6 :(得分:-1)

在ViewController中添加以下行

addNotify()
相关问题