我希望将默认状态栏样式设置为某些视图控制器,而不是其他视图控制器。对于其他视图,我想将其设置为lightcontent。
在听取了另一篇文章的建议后,我尝试在info.plist中将View controller-based status bar appearance
设置为YES
,然后添加以下代码到viewController.swift(试图只更改有问题的viewController的状态栏样式):
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return UIStatusBarStyle.LightContent
}
然而,尽管有人建议它在这里起作用:我如何在swift 2/iOS 9中正确更改我的状态栏样式?。
什么是最好的解决方案?
通过首先删除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
}
然后我将其添加到连接到我的导航控制器的viewController:
override public func preferredStatusBarStyle() -> UIStatusBarStyle {
return .LightContent
}
override func prefersStatusBarHidden() -> Bool {
return false
}
编辑:您可以选择忽略xcode向您发出的与最后一步有关的任何警告-第一个函数可以从公共更改为内部,它应该仍然有效。