iOS开发中修改状态栏颜色

1 篇文章 0 订阅

</pre>iOS开发中修改状态栏颜色</h1><div><span style="font-size:14px; white-space:pre"></span><span style="font-family:SimHei; font-size:14px">在iOS开发过程中设置视图控制器(UIViewController)和 自定义导航栏(UINavigationBar)的背景颜色或图片时,可能由于背景颜色或者图片颜色与状态栏颜色相近,导致状态栏上的手机信号、时间、电池电量等的显示看不到。这时可以通过修改状态栏的颜色使状态栏突出显示。方法有以下两种:</span></div><div><span style="font-size:14px"></span></div><div><span style="font-size:14px"><span style="white-space:pre"></span>方法一:</span></div><div><span style="white-space:pre"><span style="font-size:14px"></span></span><div><span style="font-family:'Microsoft YaHei'; font-size:14px; white-space:pre"></span><span style="font-family:SimHei; font-size:14px">修改工程的info.plist文件,工程 ——> Supporting Files ——> info.plist. 将其中的 View controller-based status bar appearance 属性 为 NO,就可以通过下面的方法设置:</span></div><div><span style="font-family:SimHei; font-size:14px">在Appdelegate中,或者在任意一个视图控制器中添加如下代码:</span></div><div><pre name="code" class="objc" style="font-size: 14px;">[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
此种方法设置后所有界面的状态栏的颜色均为同一种样式。

可以设置如下四种样式,一般最常用的为前两种样式:
<span style="font-size: 14px;">UIStatusBarStyleDefault
UIStatusBarStyleLightContent
UIStatusBarStyleBlackTranslucent
UIStatusBarStyleBlackOpaque</span>

如果想在不同的控制器中显示不同的样式那么,在对应的控制器中覆写如下方法:
<span style="font-size:14px;">- (void)viewWillAppear:(BOOL)animated{
     [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
}</span>

<span style="font-size:14px;">- (void)viewWillDisappear:(BOOL)animated{
     [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];
}</span>

这样就会在特定的控制器中设置想要的样式。


方法二:
此种方法(有局限性,在有导航控制器时,即将视图控制器添加到导航控制器后,此方法失效,此方法不调用)是在视图控制器中覆写

<span style="font-size:14px;"></span><pre name="code" class="objc"><pre name="code" class="objc">- (UIStatusBarStyle)preferredStatusBarStyle
{
    return UIStatusBarStyleLightContent;
}
 
   
 
  

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

原因是,[self setNeedsStatusBarAppearanceUpdate]发出后,

只会调用navigation controller中的preferredStatusBarStyle方法,

vc中的preferredStatusBarStyley方法跟本不会被调用。


在有导航控制器时:
子类化导航控制器,并在其中覆写preferredStatusBarStyle方法,代码如下:
- (UIStatusBarStyle)preferredStatusBarStyle
{
    return UIStatusBarStyleLightContent;
}

这样设置导航所管理的所有视图控制器的状态拦的样式都一样。


如果想要实现在不同的视图控制器中状态栏显示不同的样式,在导航控制器中如下覆写preferredStatusBarStyle方法:
- (UIStatusBarStyle)preferredStatusBarStyle
{
    UIStatusBarStyle style = [self.topViewController preferredStatusBarStyle];
    return style;
}

然后在视图控制器中同样覆写此方法:
- (UIStatusBarStyle)preferredStatusBarStyle{  
return UIStatusBarStyleLightContent; //这里返回自己想要的样式
}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值