iPhone的时间状态栏,对这一块的解释网上随便搜都有一堆了。我这只是记录一下。在iOS项目中这是默认为黑色的
可在项目中General->TAGGETS->Deployment Info里面看到设置默认是default的,在info.plist文件里面设置
<key>UIViewControllerBasedStatusBarAppearance</key><false/>
可以根据配置里面设置
tagaet设置但是在实际的项目中是有可能根据不同的需要,顶部的时间状态有时是需要改变颜色的,单纯的整个项目只用一种设置是满足不了的
一般的demo里面如果没有UINavigationController的ViewController并且在info.plist文件里面设置了
<key>UIViewControllerBasedStatusBarAppearance</key>
<true/>
那么在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文件里面设置
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
如果不将UINavigationController隐藏的话是不会执行preferredStatusBarStyle方法的。在presnet进去的ViewController因为是没有UINavigationController所以会执行这个方法.
不过在实际的项目中,如果我们不需要自定义UINavigationController或者将UINavigationController隐藏的话,那是不是就说改变不了时间状态栏的颜色呢?
肯定不是的,我们可以在info.plist文件里面设置UIViewControllerBasedStatusBarAppearance为false
并且在ViewController里面调用
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
就可以很好地解决了这个问题,当然我们不需要在每一个的ViewController里面都调用这个方法,只需要在BaseViewController的viewWillAppear方法里面调用一下,然后如果有特殊的ViewController需要改变的就在该vc下改变一下状态值就可以了。
希望可以帮助到有需要的人,当然如果有什么出错的地方,希望可以评论指出,谢谢了。。。
网友评论