当前位置: 首页 > 知识库问答 >
问题:

Swift:更改iOS 13的状态栏颜色

金赤岩
2023-03-14

对于ios 13,我无法设置状态栏的文本颜色。如何查看statusBarManager?如何仅更改文本颜色?

由于:

由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因是:“UIApplication上调用了-statusBar或-statusBarWindow的应用程序:由于不再有状态栏或状态栏窗口,必须更改此代码。”。“请使用“场景”窗口上的状态栏。”

我当前的代码:

    func setStatusBarTextColor(_ color: UIColor) {
        if #available(iOS 13.0, *) {
            // How to do for iOS 13??
        } else {
            if let statusBar = UIApplication.shared.value(forKey: "statusBar") as? UIView {
                statusBar.setValue(color, forKey: "foregroundColor")
            }
        }
    }

我已经找到了这个https://stackoverflow.com/a/57394751/9172697但它不是我要找的

共有3个答案

齐铭
2023-03-14

状态栏中文本的颜色从来不是由你决定的;你所做的总是错的。使用顶级视图控制器覆盖preferredStatusBarStyle。你有两个选择,。lightContent。darkContent,您应该使用这两种模式,因为您希望支持亮/暗模式。

孟乐
2023-03-14

在iOS 13上,您可以这样使用:

   let statusBar =  UIView()
   statusBar.frame = UIApplication.shared.statusBarFrame
   statusBar.backgroundColor = UIColor.red
   UIApplication.shared.keyWindow?.addSubview(statusBar)
吉鸿宝
2023-03-14

iOS 13.0和XCode 11.0与Swift 5.0 100%工作

    if #available(iOS 13.0, *) {


       let statusBar1 =  UIView()
       statusBar1.frame = UIApplication.shared.keyWindow?.windowScene?.statusBarManager!.statusBarFrame as! CGRect
       statusBar1.backgroundColor = UIColor.black

       UIApplication.shared.keyWindow?.addSubview(statusBar1)

    } else {

       let statusBar1: UIView = UIApplication.shared.value(forKey: "statusBar") as! UIView
       statusBar1.backgroundColor = UIColor.black
    }
 类似资料:
  • 问题内容: 我正在尝试将状态栏的颜色更改为蓝色或其他某种颜色。 这可能吗,或者Apple不允许吗? 问题答案: 注意:此解决方案在iOS 13及更高版本下失败。 Plist中的第一个设置为 输出屏幕截图如下

  • 问题内容: 在XCode 7.3.x中,我用以下方法更改了StatusBar的背景颜色: 但是似乎这在Swift 3.0中不再起作用。 病态尝试: 但这给了我: 有任何想法如何使用XCode8 / Swift 3.0进行更改吗? 问题答案: extension UIApplication { var statusBarView: UIView? { if responds(to: Selector

  • 问题内容: 对我来说,在任何ViewController中使用以上代码将特定ViewController的statusBar颜色设置为White都 不起作用 。有什么建议?使用UIApplication.sharedApplication方法,颜色会在整个应用程序的Info.plist中进行必要的更改之后更改。 如何仅更改某些必需的 特定ViewController 的状态栏颜色? 问题答案: 阅

  • 在任何ViewController中使用上面的代码将特定ViewController的statusBar颜色设置为白色对我来说在iOS8中是行不通的。有什么建议吗?使用UIApplication.SharedApplication方法,在需要对整个应用程序的Info.plist进行更改后,颜色也会更改。 我如何能够仅仅对某些必需的和特定的ViewControllers的状态栏颜色进行更改?

  • 在我的一个活动中,我使用更改了工具栏的颜色。但在使用的5.0设备上,颜色是活动主题中的的颜色,所以我有两种非常不同的颜色,看起来不太好。 我意识到在5.0中可以使用,但没有这个功能。 所以我的问题是在5.0中,如何用更改状态栏颜色?

  • 使用Xcode开发iOS时如何更改iPhone状态栏的颜色?