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];
网友评论