关于使用preferredStatusBarStyle修改状态栏

作者: 一本正经得胡说八道 | 来源:发表于2016-07-21 23:42 被阅读2356次

    今天在ViewController中使用preferredStatusBarStyle方法修改顶部状态栏颜色的时候无效,还是默认的黑色,设置断点发现并没有执行该方法,之前一直使用这个方法修改也没有出现这种情况。

    #import "ViewController.h"
    
    @interface ViewController ()
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
    
    }
    
    - (UIStatusBarStyle)preferredStatusBarStyle {
        return UIStatusBarStyleLightContent;
    }
    @end
    

    最后发现是因为这次在ViewController中加入了UINavigationController使得导航控制器不会将preferredStatusBarStyle这个方法的调用转给它的子视图,而是由导航控制器本身进行管理,所以如果在包含UINavigationController的ViewController中实现preferredStatusBarStyle方法是无论如何都不会调用的。这种情况我们就需要用另外的方法修改状态栏的颜色了,在导航控制器的navigationBar中有barStyle这个属性,这个属性决定了状态栏文本颜色是黑色还是白色,默认是黑色的(UIBarStyleDefault),如果你想把状态栏文本颜色修改为白色,那么你就需要把barStyle修改为UIBarStyleBlack,导航条默认是浅色的,所以状态栏文本颜色为黑色,如果把导航条的barStyle改为深色,那么状态栏文本颜色就会变为白色,代码如下:

    /** 将状态栏文本颜色设置为白色 */
    self.navigationController.navigationBar.barStyle = UIBarStyleBlack;
    /** 将状态栏文本颜色设置为黑色 ,默认就是黑色 */
    self.navigationController.navigationBar.barStyle = UIBarStyleDefault;
    

    还有,假如你就是想用preferredStatusBarStyle修改的话,那就只能将导航条隐藏了。不过除非特殊情况,导航条还是需要使用不能隐藏的,这样就用上面的方法修改比较合适。

    相关文章

      网友评论

        本文标题:关于使用preferredStatusBarStyle修改状态栏

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