iOS 踩坑记录 - preferredStatusBarStyle 不执行

今天改了新的需求,将原来的登录页面白色系改成了暗色系。UI改完以后,运行了以后发现顶部的状态栏字体还是黑色的,不协调。

- (UIStatusBarStyle)preferredStatusBarStyle {
    return UIStatusBarStyleLightContent;
}

随手加上代码,信心满满,运行以后。发生的事情让我难以置信,状态栏还是黑色的,没有变化,断点也没执行。

带着满脑子的疑惑开始排查问题
  • 先去翻找了自己的老项目,发现自己老项目也是这样写的,运行老项目,没问题。状态栏也是白色的。

  • 新建一个工程项目,demo运行成功。状态栏为白色

基本确定是当前项目的问题

上网查了相关资料

  • info.plist 设置View controller-based status bar style appearance = NOYES or NO 都尝试了,没效果,UI没有变化。❌
  • UINavigationController不会将 preferredStatusBarStyle方法调用转给它的子视图 需要隐藏 UINavigationBar 可是我们的 UINavigationBar 已经隐藏掉了啊。❌

再次回顾代码

跟着代码顺藤摸瓜,找到了 loginVC 创建的时候,发现了一处的代码

// 问题代码
nai.modalPresentationStyle =  UIModalPresentationOverFullScreen 

发现这里和自己平时使用有点不同,随即修改了代码

nai.modalPresentationStyle =  UIModalPresentationFullScreen 


再次运行了程序,谢天谢地,状态栏终于修改成功了。差点就惨死在这个小问题上了

最后贴上两个属性的作用

    // 跳转之后覆盖整个屏幕,不透明
    UIModalPresentationFullScreen
    //跳转之后覆盖整个屏幕,透明
    UIModalPresentationOverFullScreen 

你可能感兴趣的:(iOS 踩坑记录 - preferredStatusBarStyle 不执行)