状态栏样式不会因个别视图而更改-Swift 2/iOS9



我希望将默认状态栏样式设置为某些视图控制器,而不是其他视图控制器。对于其他视图,我想将其设置为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向您发出的与最后一步有关的任何警告-第一个函数可以从公共更改为内部,它应该仍然有效。

相关内容

  • 没有找到相关文章

最新更新