我使用navigationController,我隐藏了navigationBar,如何在iPhoneX上设置statusBar颜色? 我不想设置self.view.backgroundColor
iPhoneX缺口颜色
答案 0 :(得分:4)
UIView *statusBar = (UIView *)[[UIApplication sharedApplication] valueForKey:@"statusBar"];
statusBar.backgroundColor = [UIColor greenColor];
答案 1 :(得分:2)
这是在应用程序启动期间或视图控制器的viewDidLoad期间更改/设置状态栏背景颜色的hacky技巧。
extension UIApplication {
var statusBarView: UIView? {
return value(forKey: "statusBar") as? UIView
}
}
// Set upon application launch, if you've application based status bar
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
UIApplication.shared.statusBarView?.backgroundColor = UIColor.red
return true
}
}
or
// Set it from your view controller if you've view controller based statusbar
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
UIApplication.shared.statusBarView?.backgroundColor = UIColor.red
}
}
结果如下:
答案 2 :(得分:1)
快捷键4
func setStatusBarBackgroundColor(_ color: UIColor) {
guard let statusBar = UIApplication.shared.value(forKeyPath: "statusBarWindow.statusBar") as? UIView else { return }
statusBar.backgroundColor = color
}
答案 3 :(得分:0)
在Interface Builder中,我只是添加了一个高度为0x0,44px且与顶层视图宽度相同的视图,然后将此视图设置为所需的背景颜色。这改变了状态栏的背景颜色,而不会影响视图背景颜色。
在我的情况下,我需要这样的东西,因为我的屏幕的上半部分是一种颜色而下半部分是另一种颜色。我没有看到另一种方法使状态栏与顶部颜色匹配,主页按钮区域与底部颜色匹配。
如果额外的视图妨碍iPhone X以外的其他设备,这可以通过编程方式轻松完成。在我的情况下,它不会在其他设备上造成问题。