iOS 7以后更改系统状态栏总结以及方法

状态栏的字体为黑色:UIStatusBarStyleDefault

状态栏的字体为白色:UIStatusBarStyleLightContent

一、在info.plist中,将

View controller-based status bar appearance 设为 NO

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

// default is UIStatusBarStyleDefault

[UIApplication sharedApplication].statusBarStyle

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

1、在info.plist中,将

View controller-based status bar appearance 设为 NO.

2、在app delegate中:

[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;

3、在个别状态栏字体颜色不一样的vc中

-(void)viewWillAppear:(BOOL)animated {

      [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault;

}

-(void)viewWillDisappear:(BOOL)animated {

      [super viewWillDisappear:animated];

      [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;

}

二、在info.plist中,将 View controller-based status bar appearance设为YES,或者没有设置。

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;

方法二:

自定义一个nav bar的子类,在这个子类中重写preferredStatusBarStyle方法:

MyNav* nav = [[MyNav alloc] initWithRootViewController:vc];

self.window.rootViewController = nav;

@implementation MyNav

- (UIStatusBarStyle)preferredStatusBarStyle {

     UIViewController* topVC = self.topViewController;

     return [topVC preferredStatusBarStyle];

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

推荐阅读更多精彩内容

  • ios上状态栏 就是指的最上面的20像素高的部分 状态栏分前后两部分,要分清这两个概念,后面会用到: 前景部分:就...
    SimpleBK阅读 3,041评论 1 3
  • IOS的项目多数会遇到控制状态栏和导航栏的问题,比如隐藏状态栏、控制状态栏的文字颜色等,导航栏也有同样需求。本文总...
    YHWXQ简简单单的生活阅读 1,781评论 1 8
  • 说了很多难懂的东西,究竟如何自定义任意一个VC的状态栏前景颜色呢?我机智的把结果放到最前面,后面自己的摸索过程,想...
    半江瑟瑟阅读 7,253评论 3 7
  • 近期来总觉得心慌气短,上不来气,憋得慌,小心脏砰砰乱跳,许是低气压把体内的气压压得更低了(此处应配一个水银柱降落....
    你说我听好么阅读 224评论 1 0
  • 1. 小念头是咏春拳基础拳法,包涵着三大特色: - 不必用力 - 拥有最坚强而又最省力的招式结构 - 引导发挥人体...
    老土巴巴阅读 420评论 0 0