iOS开发中修改状态栏颜色
2015-02-01 21:56
387 查看
</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; //这里返回自己想要的样式
}
相关文章推荐
- iOS开发中 修改状态栏颜色 或者隐藏状态栏颜色
- iOS开发iOS7状态栏文字颜色修改
- IOS开发—修改状态栏颜色
- iOS开发 - 修改状态栏颜色为白色
- iOS开发-修改状态栏文字颜色
- iOS开发>学无止境 - 修改TabBarController的图标颜色及字体颜色(选中及未选中)
- iOS开发之navigation bar修改title颜色、字体等
- IOS开发之修改UISearchBar的背景颜色
- 在iOS中修改状态栏字体的颜色
- iOS 在iOS7中修改状态栏字体的颜色
- android开发 修改状态栏背景颜色和字体颜色(工作日记)
- iOS应用开发中矢量图的使用及修改矢量图颜色的方法
- iOS开发- backBarButtonItem 颜色/文字修改
- iOS 修改状态栏颜色
- iOS 修改状态栏颜色
- iOS7.0 修改状态栏字体的颜色
- iOS 7如何修改状态栏文本颜色?
- iOS 修改状态栏字的颜色(白色)
- ios隐藏顶部状态和修改顶部状态栏字体颜色
- IOS开发—无需自定义,修改tabbar背景颜色