ios9 状态栏 改变文本颜色

转载 2016年08月30日 09:58:08
状态栏的字体为黑色:UIStatusBarStyleDefault
状态栏的字体为白色:UIStatusBarStyleLightContent

APP启动页状态栏颜色设置
在info.plist添加 Status bar style,改变style值,就可以改变颜色,默认是Gray style

一、在info.plist中,将View controller-based status bar appearance设置为NO,白色,YES,黑色
如果View controller-based status bar appearance为YES。
则[UIApplication sharedApplication].statusBarStyle 无效。

解决个别VC中状态栏字体颜色不同的办法
二、在app delegate中:
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
三、在个别状态栏字体颜色不一样的vc中
-(void)viewWillAppear:(BOOL)animated
{
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault;
}
-(void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
}

用下面的方法:
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;

方法二:
自定义一个nav bar的子类,在这个子类中重写preferredStatusBarStyle方法:
MyNav* nav = [[MyNav alloc] initWithRootViewController:vc];
self.window.rootViewController = nav;

@implementation MyNav

- (UIStatusBarStyle)preferredStatusBarStyle
{
UIViewController* topVC = self.topViewController;
return [topVC preferredStatusBarStyle];

}

// 记录来源于百度知道的回答。

相关文章推荐

关于在ios7之后改变状态栏颜色

看到网上都说 在ios7之后要这样设置 首先,需要在Info.plist配置文件中,增加键:UIViewControllerBasedStatusBarAppearance,并设置为YES;...

iOS改变 状态栏 颜色。改变UIStatusBarStyle 带NavigationController的。

个性化的产品。需要再不通的viewController中显示不同UIStatusBarStyle

改变状态栏颜色

  • 2016年06月23日 14:59
  • 1.37MB
  • 下载

改变状态栏颜色

  • 2016年02月04日 16:30
  • 517KB
  • 下载

iOS更改状态栏字体颜色

状态栏的字体为黑色:UIStatusBarStyleDefault状态栏的字体为白色:UIStatusBarStyleLightContent一、在info.plist中,将View controll...
  • flyweak
  • flyweak
  • 2016年01月28日 09:49
  • 161

改变状态栏字体的颜色

  • 2010年08月12日 21:04
  • 8.85MB
  • 下载

改变状态栏颜色

  • 2016年08月08日 16:28
  • 2.83MB
  • 下载

ios更改状态栏(UIStatusBar)的颜色 最新

转自:http://my.oschina.net/shede333/blog/304560 知识普及 ios上状态栏 就是指的最上面的20像素高的部分 状态栏分前后两部分,要分清这...

两种方法改变安卓状态栏颜色

  • 2016年04月19日 16:10
  • 3.86MB
  • 下载

ios上 更改 状态栏(UIStatusBar)的颜色

IOS上 关于状态栏的相关设置(UIStatusBar) 知识普及 ios上状态栏 就是指的最上面的20像素高的部分 状态栏分前后两部分,要分清这两个概念,后面会用到: 前景部...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ios9 状态栏 改变文本颜色
举报原因:
原因补充:

(最多只允许输入30个字)