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,根据实际情况而定。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容