关于状态栏UIStatusBarStyle
状态栏有以下几种表现风格:
1.UIStatusBarStyleDefault
2.UIStatusBarStyleLightContent
API_AVAILABLE(ios(7.0))
3.UIStatusBarStyleDarkContent
API_AVAILABLE(ios(13.0))
4.UIStatusBarStyleBlackTranslucent API_DEPRECATED_WITH_REPLACEMENT("UIStatusBarStyleLightContent", ios(2.0, 7.0)) = 1,
5.UIStatusBarStyleBlackOpaque API_DEPRECATED_WITH_REPLACEMENT("UIStatusBarStyleLightContent", ios(2.0, 7.0)) = 2,
UIStatusBarStyleLightContent 的配景颜色加载方法
UIView *statusBar = [[UIView alloc] initWithFrame:CGRectMake(0, -20, self.view.frame.size.width, 20)];statusBar.backgroundColor = myColor;[self.navigationController.navigationBar addSubview:statusBar];我们想要改变状态栏样式只须要在viewController内里重载preferredStatusBarStyle方法即可
- (UIStatusBarStyle)preferredStatusBarStyle{ return UIStatusBarStyleLightContent;}怎样调用preferredStatusBarStyle方法呢
[self setNeedsStatusBarAppearanceUpdate];//让其逼迫刷新 有些雷同于 view的layoutIfNeeded方法当我们调用setNeedsStatusBarAppearanceUpdate时,体系会调用application.window.rootViewController的preferredStatusBarStyle方法,而不是当前控制器的preferredStatusBarStyle方法。在这个时间,一个紧张的方法就要派上用场了,那就是:childViewControllerForStatusBarStyle。
childViewControllerForStatusBarStyle默认返回nil。以是我们须要重写这个方法。
加入跟试图控制器是navigationController,那么,我们须要重写childViewControllerForStatusBarStyle
那么,我们子类化一个导航控制器ZXNavigationController,重写它的childViewControllerForStatusBarStyle方法:
@implementation ZXNavigationController- (UIViewController *)childViewControllerForStatusBarStyle{ return self.topViewController;}- (void)viewDidLoad { [super viewDidLoad];}提示:起首info.plist添加
View controller-based status bar appearance 将其设置为YES
如果设置为NO则不能手动对状态栏样式举行修改
部分内容转载于https://www.cnblogs.com/sundaysgarden/articles/9194636.html |