Swift 3 UIStatusBarStyle 不适用于 UINavigationController 中的单独 ViewController

Posted

技术标签:

【中文标题】Swift 3 UIStatusBarStyle 不适用于 UINavigationController 中的单独 ViewController【英文标题】:Swift 3 UIStatusBarStyle not working for separate ViewControllers within UINavigationController 【发布时间】:2016-09-25 12:24:18 【问题描述】:

Swift 3 中的某些内容发生了变化。 我曾经能够将每个ViewController 的状态栏颜色从默认更改为亮起,即使它被包裹在UINavigationController 中。

现在我有一个 UINavigationController 来管理我的所有 UIViewControllers,当我对每个 ViewController 执行此操作时,它不起作用:

override var preferredStatusBarStyle: UIStatusBarStyle 
    return .lightContent

另一方面,当我将此代码插入UINavigationCotroller 的子类时,它可以工作,但我根本无法动态更改它,这意味着我的所有ViewControllers 现在都有.lightContent 和我无法改变它。

有没有办法解决这个可怕的变化?

谢谢:)

【问题讨论】:

【参考方案1】:

您可以通过将UIApplication.shared.statusBarStyle = .lightContent 添加到您的didFinishLaunchingWithOptions 函数内的AppDelegate.swift 文件中,将其动态更改为应用程序中的所有视图。您还需要转到 info.plist 文件并添加布尔值 View controller-based status bar appearance 并将其设置为 NO

【讨论】:

以上是关于Swift 3 UIStatusBarStyle 不适用于 UINavigationController 中的单独 ViewController的主要内容,如果未能解决你的问题,请参考以下文章

`UIStatusBarStyle` 是不是相等?

UIStatusBarStyle 不会改变

如何在 Swift 3 中设置状态栏样式

Swift开发教程--怎样设置状态栏的文字颜色

如何在带有导航栏的模态视图中更改 iOS 7 中的 UIStatusBarStyle?

如何使用导航栏在模态视图中更改iOS 7中的UIStatusBarStyle?