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

时间:2018-10-25 09:55:47

标签: ios swift uinavigationbar uistatusbar

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

我只想从我的应用程序委托创建全局状态,导航,工具栏样式,如果可能的话,可以在iPhone 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

    }

我使用情节提要为视图控制器附加了虚拟设计 enter image description here

,最终结果是 enter image description here

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

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

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

  • 是否可以将statusBarStyle更改为另一个未定义的状态,并更改状态栏中的文本颜色为紫色?

1 个答案:

答案 0 :(得分:1)

我希望它将对您有帮助

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

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

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

    无法修改颜色,并且您不必担心它,因为它不受您的控制并保证可见。有关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)
      

谢谢