iOS 状态栏使用小记

状态栏:—》
文字部分: 指的是显示电池,时间等
背景部分: 就是显示黑色或者图片的背景部分

1、文字:.default 黑色, .lightContent 白色

View controller-based status bar appearance控制App状态栏显隐接受全局配置(NO)或者各控制器各自配置(YES)。

第一种:Info.plist 全局配置
在 Info.plist 里增加一行 UIStatusBarStyle( Status bar style 也可以),这里可以设置两个值,就是上面提到那两个 UIStatusBarStyleDefault 和 UIStatusBarStyleLightContent

第二种:代码设置
全局:—》
—》在 Info.plist 文件中添加 View controller-based status bar appearance 设置为 NO (理论同上,必须添加且必须设置为 NO ,否则不生效)
—》在delegate里面设置 UIApplication.shared.statusBarStyle = .lightContent

局部:—》
—》在 Info.plist 文件中添加 View controller-based status bar appearance 设置为 YES (理论同上,必须添加且必须设置为 YES ,否则不生效)
—》在自定义的NavigationController里面重新这两个方法:(因为系统会默认调用Container的preferredStatusBarStyle方法,需要重写下面两个方法)

override var childViewControllerForStatusBarStyle: UIViewController? {
    return self.topViewController
}
override var childViewControllerForStatusBarHidden: UIViewController? {
    return self.topViewController
}

—》在需要隐藏的地方重写这个方法:

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

2、背景颜色

—> 整个导航栏
// 这个方法是设置导航栏背景颜色,状态栏也会随之变色

    self.navigationController?.navigationBar.barTintColor = UIColor.red

—-》状态栏处的颜色

    let statusBarWindow: UIWindow = UIApplication.shared.value(forKey: "statusBarWindow") as! UIWindow
    let statusBar: UIView = statusBarWindow.value(forKey: "statusBar") as! UIView
    if statusBar.responds(to: #selector(getter: statusBar.backgroundColor)) {
        statusBar.backgroundColor = UIColor.green
    }

3、隐藏LunchScreen(欢迎页面)是的状态栏.

Status bar is initially hidden 设置为YES

你可能感兴趣的:(iOS 状态栏使用小记)