以前我们为了能够实时的控制顶部statusbar的样式,可能会在喜欢使用


[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];  
[[UIApplication sharedApplication]setStatusBarHidden:YES];



但是这么做之前需要将 info.plist 里面加上View controller-based status bar appearance  BOOL值设为NO,就是把控制器控制状态栏的权限给禁了,用UIApplication来控制。但是这种做法在iOS9不建议使用了,建议我们把那个BOOL值设为YES,然后用控制器的方法来管理状态栏。



1.如果 rootViewController 为 viewController,在基类中重写下面的方法就可以了

- (UIStatusBarStyle)preferredStatusBarStyle
{
    return UIStatusBarStyleLightContent;
}




2.如果 rootViewController 为 navigationController,有两种方式

第一种:

在 navigationController 所管理的 viewController 中写下面的代码

self.navigationController.navigationBar.barStyle = UIBarStyleBlack;



第二种:

为 navigationController 写一个分类,重写下面的方法

#import "UINavigationController+StatusBarStyle.h"

@implementation UINavigationController (StatusBarStyle)

- (UIStatusBarStyle)preferredStatusBarStyle
{
    return UIStatusBarStyleLightContent;
}

@end