StatusBar时间状态栏颜色的改变

iPhone的时间状态栏,对这一块的解释网上随便搜都有一堆了。我这只是记录一下。在iOS项目中这是默认为黑色的

可在项目中General->TAGGETS->Deployment Info里面看到设置默认是default的,在info.plist文件里面设置

UIViewControllerBasedStatusBarAppearance

可以根据配置里面设置

StatusBar时间状态栏颜色的改变_第1张图片
tagaet设置

但是在实际的项目中是有可能根据不同的需要,顶部的时间状态有时是需要改变颜色的,单纯的整个项目只用一种设置是满足不了的

一般的demo里面如果没有UINavigationController的ViewController并且在info.plist文件里面设置了

UIViewControllerBasedStatusBarAppearance


那么在ViewController里面是会执行

-(UIStatusBarStyle)preferredStatusBarStyle{

    return UIStatusBarStyleLightContent;

}

这个方法的,其中UIStatusBarStyleLightContent表示的是时间状态栏字体颜色是白色,UIStatusBarStyleDefault则是表示黑色。

但是,如果不在info.plist里面添加以上一行的设置或者将设置改为false的话,在ViewController里面添加preferredStatusBarStyle方法是不执行的。不过在项目的General->Deployment info设置Status Bar Style还是可以的。

不过在实际的项目中,不可能只是单纯的只有ViewController而没有UINavigationController这些层次结构的。

如果想在有UINavigationController的项目中调用preferredStatusBarStyle来改变状态栏的字体颜色的话,就需要将UINavigationController隐藏掉,然后只能自定义

UINavigationController并且在info.plist文件里面设置

UIViewControllerBasedStatusBarAppearance



如果不将UINavigationController隐藏的话是不会执行preferredStatusBarStyle方法的。在presnet进去的ViewController因为是没有UINavigationController所以会执行这个方法.

不过在实际的项目中,如果我们不需要自定义UINavigationController或者将UINavigationController隐藏的话,那是不是就说改变不了时间状态栏的颜色呢?

肯定不是的,我们可以在info.plist文件里面设置UIViewControllerBasedStatusBarAppearance为false

并且在ViewController里面调用

[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;

就可以很好地解决了这个问题,当然我们不需要在每一个的ViewController里面都调用这个方法,只需要在BaseViewController的viewWillAppear方法里面调用一下,然后如果有特殊的ViewController需要改变的就在该vc下改变一下状态值就可以了。

希望可以帮助到有需要的人,当然如果有什么出错的地方,希望可以评论指出,谢谢了。。。

你可能感兴趣的:(StatusBar时间状态栏颜色的改变)