今天改了新的需求,将原来的登录页面白色系改成了暗色系。UI改完以后,运行了以后发现顶部的状态栏字体还是黑色的,不协调。
- (UIStatusBarStyle)preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}
随手加上代码,信心满满,运行以后。发生的事情让我难以置信,状态栏还是黑色的,没有变化,断点也没执行。
带着满脑子的疑惑开始排查问题
-
先去翻找了自己的老项目,发现自己老项目也是这样写的,运行老项目,没问题。状态栏也是白色的。
-
新建一个工程项目,demo运行成功。状态栏为白色
基本确定是当前项目的问题
上网查了相关资料
- info.plist 设置
View controller-based status bar style appearance = NO
YES or NO 都尝试了,没效果,UI没有变化。❌ -
UINavigationController不会将 preferredStatusBarStyle方法调用转给它的子视图 需要隐藏 UINavigationBar
可是我们的 UINavigationBar 已经隐藏掉了啊。❌
再次回顾代码
跟着代码顺藤摸瓜,找到了 loginVC 创建的时候,发现了一处的代码
// 问题代码
nai.modalPresentationStyle = UIModalPresentationOverFullScreen
发现这里和自己平时使用有点不同,随即修改了代码
nai.modalPresentationStyle = UIModalPresentationFullScreen
✅
再次运行了程序,谢天谢地,状态栏终于修改成功了。差点就惨死在这个小问题上了
最后贴上两个属性的作用
// 跳转之后覆盖整个屏幕,不透明
UIModalPresentationFullScreen
//跳转之后覆盖整个屏幕,透明
UIModalPresentationOverFullScreen
网友评论