美文网首页
设置状态栏的文字颜色

设置状态栏的文字颜色

作者: langlangago | 来源:发表于2016-10-24 22:09 被阅读140次

    一般我们开发的时候,app运行起来,状态栏的文字颜色是黑色的。但是有些项目却要求状态栏颜色要白色,上网搜索了一下,测试并总结了一下好用的方法:(测试环境,xcode8,ios10)

    方法一:
    在info.plist文件上添加两个字段:

    第一个:key为 "View controller-based status bar appearance",类型为"Boolean",value为:"NO";

    第二个:key为"Status bar style",类型为"String",value为"Opaque black style"(白色)。
    (ps:第二个字段的值是可以选择的,除了将值设置为Gray style (default)时文字为黑色之外,其他都为白色。除此之外,还可以直接手动输入系统的枚举类型("UIStatusBarStyle")的值:)

    上个图:


    C5F663D3-1662-4DC5-8924-486D733924A8.png

    "UIStatusBarStyle"的定义如下:(四个值中,设置为第一个值之后文字为黑色,其他三个都为白色,系统默认为黑色)

    typedef NS_ENUM(NSInteger, UIStatusBarStyle) {
        UIStatusBarStyleDefault                                     = 0, // 黑色字体
        UIStatusBarStyleLightContent     NS_ENUM_AVAILABLE_IOS(7_0) = 1, // 白色字体
        UIStatusBarStyleBlackTranslucent NS_ENUM_DEPRECATED_IOS(2_0, 7_0, "Use UIStatusBarStyleLightContent") = 1,
        UIStatusBarStyleBlackOpaque      NS_ENUM_DEPRECATED_IOS(2_0, 7_0, "Use UIStatusBarStyleLightContent") = 2,
    } __TVOS_PROHIBITED;
    

    方法二:(据说ios9之后都用这个方法了)
    首先,在info.plist文件上添加一个字段:
    字段的key为 "View controller-based status bar appearance",类型为"Boolean",value为:"YES";(和上面的方法的值不一样)

    接着,在你所要设置的UINavigationController的rootViewController中加上下面的代码:

    -(UIStatusBarStyle)preferredStatusBarStyle
    {
        return UIStatusBarStyleLightContent;
    }
    

    或者说你自定义了一个NavigationController继承自系统的NavigaitionController,那么在你自己自定义的Nav中添加上面的代码也可以。代码中函数返回的值参考方法一中贴出的枚举"UIStatusBarStyle"的值。


    还有一点,ios9以前设置的方法。
    具体和方法一大同小异,只是用代码实现的罢了。
    首先,在info.plist文件上添加一个字段:
    字段的key为 "View controller-based status bar appearance",类型为"Boolean",value为:"NO";
    之后在AppDelegate中添加下面代码:

     [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
    

    (ps:当info.plist文件中"View controller-based status bar appearance"设置为"YES"的时候,这个方法会失效,只能采用方法二)

    这个方法ios9以后被弃用了,同时弃用的还有含动画的方法:

    @property(readwrite, nonatomic) UIStatusBarStyle statusBarStyle NS_DEPRECATED_IOS(2_0, 9_0, "Use -[UIViewController preferredStatusBarStyle]") __TVOS_PROHIBITED;
    - (void)setStatusBarStyle:(UIStatusBarStyle)statusBarStyle animated:(BOOL)animated NS_DEPRECATED_IOS(2_0, 9_0, "Use -[UIViewController preferredStatusBarStyle]") __TVOS_PROHIBITED;
    

    最后,讨论一下"View controller-based status bar appearance"这个字段,这个大概是用来确定是用什么方法来设置状态栏的文字颜色。
    当值为"YES"的时候,就需要在ViewController里面重写方法-(UIStatusBarStyle)preferredStatusBarStyle来设置。
    当值为"NO"的时候,就用 [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];来设置,或者在info.plist文件中设置。


    如果有错误,欢迎指出,感激灰常!

    相关文章

      网友评论

          本文标题:设置状态栏的文字颜色

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