【发布时间】: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