美文网首页
iOS状态栏(UIStatusBar)相关设置

iOS状态栏(UIStatusBar)相关设置

作者: block_smile | 来源:发表于2017-06-17 17:31 被阅读32次

iOS状态栏就是最上面20像素高度的部分

屏幕快照 2017-06-17 下午4.59.25.png
  • 状态栏分为前后两部分:
    • 显示部分:时间、电池、运营商等的显示部分;
    • 背景部分:背景设置显示的需求颜色部分;

1.设置显示颜色:

  • 分为两种:

    • 默认的黑色(UIStatusBarStyleDefault)
    • 白色(UIStatusBarStyleLightContent)
  • 我们使用导航控制器做rootViewController
    ,需要子类化一个UINavigationController,重写下面的方法:

    - (UIViewController *)childViewControllerForStatusBarStyle{
        return self.topViewController;
    }
    

重写之后,不再调用我自己(就是UINavigationController)的preferredStatusBarStyle方法,而是去调用navigationController.topViewController的preferredStatusBarStyle方法,这样写的话,就能保证当前显示的UIViewController的preferredStatusBarStyle方法能影响statusBar的前景部分。这只是一种情况,慢慢会补全见到的其他部分.

2.设置背景:

  • 系统提供的方法
    • navigationBar的setBarTintColor接口,用此接口可改变statusBar的背景色

注意:一旦你设置了navigationBar的- (void)setBackgroundImage:(UIImage *)backgroundImage forBarMetrics:(UIBarMetrics)barMetrics接口,那么上面的setBarTintColor接口就不能改变statusBar的背景色,statusBar的背景色就会变成纯黑色。

  • 另辟蹊径

一个UIView,
设置该UIView的frame.size 和statusBar大小一样,
设置该UIView的frame.origin 为{0,-20},
设置该UIView的背景色为你希望的statusBar的颜色,
在navigationBar上addSubView该UIView即可。

      UIView *statusView = [[UIView alloc]initWithFrame:CGRectMake(0, -20, [UIScreen mainScreen].bounds.size.width, 20)];

      statusView.backgroundColor = [UIColor blackColor];

      [self.navigationController.navigationBar addSubview:statusView];

相关文章

网友评论

      本文标题:iOS状态栏(UIStatusBar)相关设置

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