【问题标题】:preferredStatusBarStyle not respecting on iOS 13在 iOS 13 上,preferredStatusBarStyle 不尊重
【发布时间】:2019-10-02 14:45:01
【问题描述】:

我正在我的模拟器中使用深色背景的单视图应用程序工作。它是一个封装在 UINavigationController 中的 UIViewController。

在我的视图控制器中我有override var preferredStatusBarStyle: UIStatusBarStyle { .lightContent }

在我的 info.plist 我有View controller-based status bar appearance = YES

但当我运行它时,它会显示白色一秒钟,然后跳转到黑色文本。

这里发生了什么?有解决办法吗?

编辑:我试过 .default.lightContent.darkContent 只是为了确定,没有任何效果

【问题讨论】:

标签: ios swift


【解决方案1】:

我最近遇到了这个问题,这些扩展似乎解决了这个问题。

extension UITabBarController {
    open override var childForStatusBarStyle: UIViewController? {
        return selectedViewController?.childForStatusBarStyle ?? selectedViewController
    }
}

extension UINavigationController {
    open override var childForStatusBarStyle: UIViewController? {
        return topViewController?.childForStatusBarStyle ?? topViewController
    }
}

我只是将它们放入一个名为 UIViewController+StatusBar.swift 的文件中,并将其包含在项目中。

【讨论】:

  • 谢谢!我将编辑我的问题以提及我的 VC 在 UINavigationController 中,因此您的第二个扩展程序成功了。关于标签栏,我已经多次看到这个问题
  • 这是错误的。当你有导航栏时,改变状态栏样式的方法是设置导航栏的barStyle。在stackoverflow.com/a/52457515/341994查看我的回答
【解决方案2】:

@matt 引用的正确答案是viewDidLoad 中的navigationController?.navigationBar.barStyle = .lightContent

【讨论】:

  • 如果你想要一个白色的状态栏,不是.lightContent而是.blackUIBarStyle.lightContent不存在。
猜你喜欢
  • 2020-04-21
  • 2013-06-26
  • 1970-01-01
  • 2018-01-04
  • 2022-01-03
  • 2021-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多