【问题标题】:How do I programatically set the status bar background color for all view controllers in AppDelegate?如何以编程方式为 AppDelegate 中的所有视图控制器设置状态栏背景颜色?
【发布时间】:2021-05-14 19:26:34
【问题描述】:

有没有办法在 AppDelegate 文件中以编程方式设置状态栏背景颜色,以便可以将这种背景颜色应用于给定应用程序中的所有视图控制器?

我从另一个 Stack Overflow 线程中找到了下面的解决方案,但问题是该代码需要应用于应用程序中的每个视图控制器,我认为这不是一个可持续的解决方案。谢谢。

   if #available(iOS 13.0, *) {
   let app = UIApplication.shared
   let statusBarHeight: CGFloat = app.statusBarFrame.size.height

   let statusbarView = UIView()
   statusbarView.backgroundColor = UIColor.red
   view.addSubview(statusbarView)

   statusbarView.translatesAutoresizingMaskIntoConstraints = false
   statusbarView.heightAnchor
     .constraint(equalToConstant: statusBarHeight).isActive = true
   statusbarView.widthAnchor
     .constraint(equalTo: view.widthAnchor, multiplier: 1.0).isActive = true
   statusbarView.topAnchor
     .constraint(equalTo: view.topAnchor).isActive = true
   statusbarView.centerXAnchor
     .constraint(equalTo: view.centerXAnchor).isActive = true

   } else {
      let statusBar = UIApplication.shared.value(forKeyPath: 
   "statusBarWindow.statusBar") as? UIView
      statusBar?.backgroundColor = UIColor.red
   }

【问题讨论】:

  • "...但问题是这段代码需要应用到应用程序中的每个视图控制器..." 当我阅读像这样的评论为什么不只是子类UIViewController

标签: ios swift frontend statusbar appdelegate


【解决方案1】:

在这种情况下,您可以为每个视图控制器使用具有上述属性的 containerView 并嵌入您的 UIView。 它将被定义和配置一次。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-22
    • 2019-05-29
    • 1970-01-01
    相关资源
    最近更新 更多