美文网首页
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