我希望将默认状态栏样式设置为某些视图控制器,而不是其他视图控制器。对于其他视图,我想将其设置为lightcontent。
在接受其他帖子的建议后,我尝试在info.plist中将View controller-based status bar appearance
设置为YES
并添加,然后将以下代码添加到viewController.swift(尝试仅更改状态栏有问题的viewcontroller的样式):
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return UIStatusBarStyle.LightContent
}
但是,尽管有这样的建议,但这不起作用:how do I properly change my status bar style in swift 2/ iOS 9?。
什么是最佳解决方案?
答案 0 :(得分:1)
通过首先删除info.plist中的View controller-based status bar appearance
然后将其添加到导航视图控制器来管理解决此问题:
extension UINavigationController {
public override func childViewControllerForStatusBarHidden() -> UIViewController? {
return self.topViewController
}
public override func childViewControllerForStatusBarStyle() -> UIViewController? {
return self.topViewController
}
然后我将它添加到连接到我的navigationController的viewController:
override public func preferredStatusBarStyle() -> UIStatusBarStyle {
return .LightContent
}
override func prefersStatusBarHidden() -> Bool {
return false
}
编辑:您可以选择忽略xcode为您提供的与此最后一步相关的任何警告 - 第一个功能可以从公共更改为内部,它应该仍然有效。