美文网首页
StatusBar时间状态栏颜色的改变

StatusBar时间状态栏颜色的改变

作者: 烟火_jason | 来源:发表于2018-08-21 13:56 被阅读0次

    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下改变一下状态值就可以了。

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

    相关文章

      网友评论

          本文标题:StatusBar时间状态栏颜色的改变

          本文链接:https://www.haomeiwen.com/subject/smcerttx.html