iOS statusBar 字体设置为白色

第一种方法

  1. 在 info.plist 中 View controller-based status bar appearance 设置为 NO
  2. UIApplication.shared.statusBarStyle = .lightContent

随着苹果api的更新就会出一个黄色警告

Setter for 'statusBarStyle' was deprecated in iOS 9.0: Use -[UIViewController preferredStatusBarStyle]

经查询 使用 [UIViewController preferredStatusBarStyle] 更合理,每个页面都可以方便的修改 statusBar 的颜色

第二种方法

  1. 在 info.plist 中 View controller-based status bar appearance 设置为 YES

一般在创建工程之初都会自定义一个BaseNavigationViewController继承UINavigationController,也会创建一个BaseViewController继承UIViewController。

在BaseNavigationViewController中重写 childForStatusBarStyle 方法

//  BaseNavigationViewController 中的方法
override var childForStatusBarStyle: UIViewController? {
    return self.topViewController
}

在BaseViewController中重写 preferredStatusBarStyle 方法。

//  BaseNavigationViewController 中的方法
override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

具体哪个页面设置什么颜色在BaseViewController的子类中重写 preferredStatusBarStyle 方法即可。

后记:
在一次修改老项目过程中就遇到了viewController中preferredStatusBarStyle方法不执行的情况,网上有两种说法:
1、需要隐藏系统导航条;
2、没有隐藏的需要使用self.navigationController.navigationBar.barStyle方式修改。

各种都尝试了就是不行,最后发现和根视图中的childForStatusBarStyle方法有关,在这个方法返回你正在显示的viewController,preferredStatusBarStyle这个方法就开始执行了。

如果根视图是tab,那就返回self.select;如果根视图是nav,那就返回self.top,根据实际情况而定。

你可能感兴趣的:(iOS statusBar 字体设置为白色)