iOS 如何优雅的控制状态栏颜色

状态栏.gif

iOS状态栏颜色 只有两种
状态栏的字体为黑色:UIStatusBarStyleDefault
状态栏的字体为白色:UIStatusBarStyleLightContent

很多产品都不可能只设计一种状态栏,一般导航栏不为白色就需要换成白色状态栏,达到界面美观,怎样灵活控制呢?

1、修改info.plist
    在info.plist中,将 View controller-based status bar appearance 设为 NO. (系统默认为yes)

2、由于大部分push出来的页面都是用黑色的状态栏,在基类Baseviewvontroller中的统一设置
-(void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    //状态栏 黑色
    [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault;
}

3. 有些叼专的页面要玩点小花样就陪它玩,在需要变的控制器里viewWillAppea方法实现;
- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    //状态栏颜色
    [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
}

说点自己的想法,为什么这样操作就达到效果了。
由于所有创建的控制器继承于baseviewcontroller,都会先走baseviewcontroller 的 viewWillAppear ,达到不管什么操作出来的界面都是 统一设置的颜色;
单独修改怎么做到呢,在调用baseviewcontroller的 viewWillAppear后 再执行外层实现的viewWillAppear。
附上:info文件配置


配置.png

推荐使用新版 设置状态栏方式 swift版本

  1. info 配置
    各自控制器之间互不影响


    statusInfoplis.png
  2. 启动页状态栏设置


    1651687257654_.pic.jpg
  3. baseViewController 统一配置

  override var preferredStatusBarStyle: UIStatusBarStyle {
        return .darkContent 
   }

  1. 刷新状态栏
    切换主题的时候需要用到,用于设置当前主题下展示的状态栏颜色
   setNeedsStatusBarAppearanceUpdate()  
  1. 特殊页面单独设置
    重写preferredStatusBarStyle
  override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent 
   }

*只限本人的想法,如果有什么不对的,或者更好的解决方案,希望不吝赐教

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容