各个视图的状态栏样式不会更改 - Swift 2 / iOS9

时间:2016-07-26 01:58:04

标签: ios swift swift2 xcode7.3

我希望将默认状态栏样式设置为某些视图控制器,而不是其他视图控制器。对于其他视图,我想将其设置为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?

什么是最佳解决方案?

1 个答案:

答案 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为您提供的与此最后一步相关的任何警告 - 第一个功能可以从公共更改为内部,它应该仍然有效。