如何在iPhoneX上设置statusBar颜色?

时间:2017-12-04 03:57:31

标签: iphone-x

我使用navigationController,我隐藏了navigationBar,如何在iPhoneX上设置statusBar颜色? 我不想设置self.view.backgroundColor

iPhoneX缺口颜色

enter image description here

4 个答案:

答案 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
    }

}



结果如下:

enter image description here

答案 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以外的其他设备,这可以通过编程方式轻松完成。在我的情况下,它不会在其他设备上造成问题。