iOS的状态栏风格更改
iOS 的状态栏风格如何更改呢?
iOS9及之前使用UIApplication 的setStatusBarStyle修改状态栏风格。遗憾的9之后,成为过时API。如何解决呢?
- 通过重写UIViewController的prefersStatusBarHidden与preferredStatusBarStyle控制各种页面状态栏风格
- plist配置文件中UIViewControllerBasedStatusBarAppearance属性设置为YES。
分几种情况。
1.根控制器为普通的页面控制器UIViewController
1
2
3
4
5
6
7
8
|
- (BOOL)prefersStatusBarHidden {
return YES;
}
- (UIStatusBarStyle)preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}
|
2.如果根控制器为导航控制器UINavigationController或UITabBarController
状态栏的风格会交由导航控制器管理,你只需要在容器 controller 中修改属性即可。
1
2
3
4
|
- (UIStatusBarStyle)preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}
|
3.同一页面UIViewController不同状态下的切换。
1
2
|
@property (nonatomic, assign) UIStatusBarStyle statusBarStyle;
|
- 重写preferredStatusBarStyle方法。
1
2
3
|
- (UIStatusBarStyle)preferredStatusBarStyle {
return self.statusBarStyle;
}
|
1
2
|
self.statusBarStyle = UIStatusBarStyleLightContent;
[self setNeedsStatusBarAppearanceUpdate];
|
4.容器套容器。
通过重写childViewControllerForStatusBarStyle实现。指定是使用容器的状态栏风格或子页面的状态栏风格。
小结
1.修改状态栏风格需要考虑好页面层级的管理。
2.能复用窗口风格的尽量不要在子页面管理器中定义。
文章作者
梵梵爸
上次更新
2017-12-04
许可协议
原创文章,如需转载请注明文章作者和出处。谢谢