自 Xcode 11.4 以来的状态栏样式问题

Posted

技术标签:

【中文标题】自 Xcode 11.4 以来的状态栏样式问题【英文标题】:Status Bar Style issues since Xcode 11.4 【发布时间】:2020-05-28 09:51:21 【问题描述】:

由于 Xcode 11.4 覆盖 preferredStatusBarStyle 属性在某些情况下似乎不再起作用。

我们有一个UINavigationController 的扩展,我们基本上为每个 ViewController 覆盖它,但自 Xcode 11.4 起不再调用此属性。因此,大多数 ViewController 的状态栏都是黑色的。

extension UINavigationController 

    override open var preferredStatusBarStyle: UIStatusBarStyle 
        return .lightContent
    


对于我们再次覆盖preferredStatusBarStyle 的某些视图控制器,它也停止工作。该属性被访问,但是状态栏不会改变它的颜色。

View controller-based status bar appearance 在 info.plist 中设置为 YES

问题出现在模拟器和真实设备上。

有人也有这个问题吗?

【问题讨论】:

***.com/questions/38213286/… Jut 子类 NavigationController 然后覆盖使用!! 【参考方案1】:

好的,我找到了解决方案。看起来我需要将 navigationBar 的 barStyle 设置为 .black,如 here 所述

navigationController?.navigationBar.barStyle = .black

不知道为什么现在需要这样做。

那时就不再需要UINavigationController 扩展了。

【讨论】:

【参考方案2】:

在此更改 appdelegate 中的 UIStatusBarStyle:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool 
         
        return true
    

【讨论】:

以上是关于自 Xcode 11.4 以来的状态栏样式问题的主要内容,如果未能解决你的问题,请参考以下文章

自 IOS 13 以来,UISearchController 在状态栏中意外绘制 UITableView

Phonegap:动态显示和隐藏状态栏(iOS Xcode)

Xcode 11.4 导航栏按钮问题

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

使用 Xcode 和 Swift 创建的 iOS 应用程序中状态栏的自定义背景颜色

离子状态栏白底白字