我有一个通用的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中,我设置了以下设置:
当我导航到该视图控制器并且仍然可见时,状态栏不会隐藏。
答案 0 :(得分:5)
在视图控制器中覆盖prefersStatusBarHidden
:
override var prefersStatusBarHidden: Bool {
return true
}
为No
设置值View Controller based status bar appearance
,然后显示/隐藏特定视图控制器的状态栏。
结果如下:
答案 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 }
这将使“隐藏状态栏”按预期工作。检查“部署信息”下项目“常规”设置中的隐藏状态栏。
答案 5 :(得分:0)
在Swift 5中
override var preferredStatusBarStyle: UIStatusBarStyle {
return .default
}
答案 6 :(得分:-1)
在ViewController中添加以下行
addNotify()