如何在没有警告的情况下在 AppDelegate 中设置 statusBarStyle

How to set statusBarStyle inside AppDelegate with no warnings

在我开始之前,如果这个问题被重复,我会道歉,因为我看到了很多问题,但我找不到我需要的。

我想创建全局状态、导航、工具栏样式,如果可能的话,仅从我的应用程序委托创建 iPhones X 视图的底部,这样我就不必从每个 Viewcontroller 中设置它。

到目前为止我有:

extension UIApplication {

    var statusBarView: UIView? {
        return value(forKey: "statusBar") as? UIView
    }

}

以及在 didFinishLaunchingWithOptions 方法中调用的函数

private func setupNavigationBarStyle(){

     UIApplication.shared.statusBarView!.backgroundColor = UIColor.AppColors.statusBar
     UIApplication.shared.statusBarStyle = .lightContent
     UINavigationBar.appearance().barTintColor = .brown
     UINavigationBar.appearance().tintColor = .green
     UINavigationBar.appearance().titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.yellow]
     UINavigationBar.appearance().isTranslucent = false

    }

我使用故事板为我的视图控制器附加了一个虚拟设计

最后的结果是

尽管不是最好的设计,但我有 3 个问题。

希望对你有所帮助

  • UIApplication.shared.statusBarStyle = .lightContent 已弃用,它显示警告,我不希望那样。

    转到项目 -> 目标,将状态栏样式设置为浅色

    • 如何更改 iPhone X 之后底部的颜色(当前为红色以及水平线所在的位置)。

    无法修改颜色,您不必担心,因为它不在您的控制范围内并且保证是 visible.For Info(https://medium.freecodecamp.org/reverse-engineering-the-iphone-x-home-indicator-color-a4c112f84d34).

    • 我可以为另一个未定义的 statusBarStyle 更改状态栏中的文本颜色紫色吗?

      func setStatusBarBackgroundColor(color: UIColor) {
      
          guard let statusBar = UIApplication.shared.value(forKeyPath: "statusBarWindow.statusBar") as? UIView else { return }
              statusBar.backgroundColor = color
      }
      
      //Use self.setStatusBarBackgroundColor(color: .purple)
      

谢谢