博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS 更改状态栏颜色和隐藏状态栏
阅读量:7083 次
发布时间:2019-06-28

本文共 2531 字,大约阅读时间需要 8 分钟。

  hot3.png

更改状态栏颜色

iOS7以后

状态栏的字体为黑色:UIStatusBarStyleDefault

状态栏的字体为白色:UIStatusBarStyleLightContent

解决方案

1、在info.plist中,将View controller-based status bar appearance 设为 NO

状态栏字体的颜色只由下面的属性设定,默认为白色:

[UIApplication sharedApplication].statusBarStyle =  UIStatusBarStyleDefault

解决个别vc中状态栏字体颜色不同的办法

1、修改info.plist    在info.plist中,将 View controller-based status bar appearance 设为 NO.2、在app delegate中添加:    [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;3、在个别ViewController状态栏字体颜色不一样的地方:    -(void)viewWillAppear:(BOOL)animated {        [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault;    }    -(void)viewWillDisappear:(BOOL)animated {        [super viewWillDisappear:animated];        [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;    }

2、在info.plist中,将View controller-based status bar appearance 设为 YES

在info.plist中 View controller-based status bar appearance 的 默认值就是YES

如果View controller-based status bar appearance为YES 时 [UIApplication sharedApplication].statusBarStyle 无效。

解决方案:

1、在vc中重写vc的preferredStatusBarStyle方法    -(UIStatusBarStyle)preferredStatusBarStyle {        return UIStatusBarStyleDefault;    }    2、在viewDidload中调用:    [self setNeedsStatusBarAppearanceUpdate];

可能出现的问题:

当vc在nav中时,上面方法没用,vc中的preferredStatusBarStyle方法根本不用被调用。

原因是,[self setNeedsStatusBarAppearanceUpdate]发出后,只会调用navigation controller中的preferredStatusBarStyle方法,vc中的preferredStatusBarStyley方法跟本不会被调用。

解决办法有两个:

方法一:    设置 navbar 的barStyle 属性会影响status bar 的字体和背景色。如下。    //status bar的字体为白色 ,导航栏的背景色是黑色。    self.navigationController.navigationBar.barStyle = UIBarStyleBlack;    //status bar的字体为黑色 ,导航栏的背景色是白色,状态栏的背景色也是白色。    self.navigationController.navigationBar.barStyle = UIBarStyleDefault;    方法二:    自定义一个navController的子类,在这个子类中重写preferredStatusBarStyle方法:    MyNav* nav = [[MyNav alloc] initWithRootViewController:vc];    self.window.rootViewController = nav;    @implementation MyNav    - (UIStatusBarStyle)preferredStatusBarStyle {        UIViewController* topVC = self.topViewController;        return [topVC preferredStatusBarStyle];    }

隐藏某个控制器的状态栏

1.View controller-based status bar appearance = NO

[[UIApplication sharedApplication] setStatusBarHidden:hidden];

2.View controller-based status bar appearance = YES

-  (BOOL)prefersStatusBarHidden {    return YES;}

3.设置Status bar is initially hidden = YES

可以隐藏启动页展示过程的状态栏。

 

作者:CodingTom
链接:https://www.jianshu.com/p/889cff2b3a52
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

转载于:https://my.oschina.net/huqiji/blog/2962132

你可能感兴趣的文章
Linux下整合Apache和Tomcat
查看>>
桌面图标右键选择发送到就会出现卡住假死
查看>>
关于旅行的文章..............搜集
查看>>
关于VLOOUP函数与index match函数
查看>>
Netscaler重置密码的方法
查看>>
MySQL内存设置—— MySQL server has gone away
查看>>
Java语言中的----运算符
查看>>
Cannot Register the virtual hard
查看>>
Linux系统的各种后门和日志工具详细介绍
查看>>
支付宝及时到账支付成功返回信息
查看>>
linux基础之bash基础
查看>>
MyEclipse 快捷键
查看>>
jQuery data- 取值
查看>>
05-k8s-fannel
查看>>
冷饭热炒-谈DOS和DDOS***
查看>>
ntop的安装与使用
查看>>
ES Java API_基于bulk实现多4S店销售数据批量上传
查看>>
TypeScript基础入门之JSX(二)
查看>>
根据某一字段值相同合并字符串 - - SQL
查看>>
django-关于JSON编码格式的异常处理
查看>>