iOS修改状态条文字的颜色为白色的 正确方法

方案一:
Info.plist中设置UIViewControllerBasedStatusBarAppearance 为NO时:
(1) 在info.plist中设置 Status bar style为UIStatusBarStyleLightContent或UIStatusBarStyleDefault有效, 所有页面默认为此样式
(2) 在需要改变状态栏颜色的ViewController中在ViewDidLoad方法中添加代码:
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

方案二.:
Info.plist中设置UIViewControllerBasedStatusBarAppearance 为YES
(1) 在info.plist中设置 Status bar style为UIStatusBarStyleLightContent或UIStatusBarStyleDefault无效, 所有页面默认样式为UIStatusBarStyleDefault.
(2) 在根视图控制其中添加代码:

  • (UIViewController *)childViewControllerForStatusBarStyle {
    // return self.topViewController;//栈顶的控制器 一般就是当前可见的控制器
    return self.visibleViewController;//当前可见的控制器
    }

即状态栏样式由当前可见的控制器决定
(3) 在某控制器添加代码:

  • (UIStatusBarStyle)preferredStatusBarStyle {
    return UIStatusBarStyleLightContent;//UIStatusBarStyleDefault
    }

只有完成(2)时, 此代码才有效
(4) 当某页面已经显示的时候需要动态地更改状态栏样式, 添加一下代码:
[self setNeedsStatusBarAppearanceUpdate];

另外, 在使用模态视图跳转后, 状态栏会变成跳转后的页面设置的颜色, 而且返回后状态栏颜色不会改变. 例如UIAlertController的使用就是模态视图跳转, 我们需要在回收模块视图窗口后刷新状态栏:
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerStyleActionSheet];
UIAlertAction *action5 = [UIAlertAction actionWithTitle:@“取消” style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
[self setNeedsStatusBarAppearanceUpdate];
}];
[alertController addAction:action5];
[self presentViewController:alertController animated:true completion:nil];

转载:https://www.jianshu.com/p/d6564a3eb875

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值