statusBarStyle设置问题

在一些支持iOS6、iOS7的项目中,转换statusBarStyle的方法:

方法一

  1. info.plist文件中添加:View controller-based status bar appearance为NO;

  2. 在viewController中实现:

    1
    2
    3
    4
    -(UIStatusBarStyle)preferredStatusBarStyle
    {
    return UIStatusBarStyleLightContent;
    }
  3. ViewController的viewDidLoad中增加调用:

    1
    [self setNeedsStatusBarAppearanceUpdate];

    Note:这种方法在有navigationController的时候不奏效

方法二

UINavigationController并不会转发preferredStatusBarStyle方法给它的childViewControllers,而是在屏幕顶层自己管理statusBar的状态。所以在navigationContrllerchildViewController中实现preferredStatusBarStyle并不奏效。

修改方法:

1
self.navigationController.navigationBar.barStyle = UIBarStyleBlack;

方法三

AppDelegatedidFinishLaunchingWithOptions方法里添加:

1
[[UINavigationBar appearance] setBarStyle:UIBarStyleBlack];

方法四

UINavigationController增加一个category:

在category中实现方法:

1
2
3
4
- (UIStatusBarStyle)preferredStatusBarStyle
{
return UIStatusBarStyleLightContent;
}