iOS开辟 动态修改状态栏颜色

计算机软件开发 2024-9-23 08:04:22 42 0 来自 中国
关于状态栏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
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-10-18 20:26, Processed in 0.145060 second(s), 32 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表