首页 > 代码库 > iOS 修改状态栏preferredStatusBarStyle不执行问题

iOS 修改状态栏preferredStatusBarStyle不执行问题

一、在老版本的iOS中,状态栏永远都是白色风格。而在iOS 7中,我们可以修改每个view controller中状态栏的外观。通过UIStatusBarStyle常量可以指定状态栏的内容是暗色或亮色。默认情况下,状态栏的显示是暗色。也就是说,状态栏上的时间、电池指示器和Wi-Fi信号显示为暗色。如果导航栏中使用暗色为背景,那么看起来的效果如下图所示:

技术分享

如上图这种情况下,我们可能希望将导航栏的风格修改为亮色。这里有两个方法可以实现。在iOS 7中,我们可以在每个view controller中overridingpreferredStatusBarStyle:方法,如下所示:

- (UIStatusBarStyle)preferredStatusBarStyle {     
    return UIStatusBarStyleLightContent; 
}

PS:此法的只有在设置了以下代码才会被调用(对于preferredStatusBarStyle不执行问题):

[self.navigationController.navigationBar setBarStyle:UIBarStyleBlack];

上面代码的效果如下图所示:

技术分享

二、在iOS 7中,通过上面的方法来修改状态栏风格非常的棒。另外,我们也可以使用UIApplication的statusBarStyle方法来设置状态栏,不过,首先需要停止使用View controller-based status bar appearance。在project target的Info tab中,插入一个新的key,名字为View controller-based status bar appearance,并将其值设置为NO。

技术分享

然后就可以使用下面的代码来设置状态栏风格了:

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

  

iOS 修改状态栏preferredStatusBarStyle不执行问题