Swift iOS 15:启动应用程序时状态栏显示不正确的样式

Swift iOS 15: Status bar shows incorrect style when launching the app

提问人:Clément Besson 提问时间:10/26/2021 最后编辑:Clément Besson 更新时间:10/26/2021 访问量:3080

问:

我的应用使用导航控制器作为初始视图控制器。请看随附的截图

主要

在第一个嵌入在导航控制器中的视图控制器中,我使用 view did load 方法设置导航栏样式,如下所示:

navigationController?.navigationBar.overrideUserInterfaceStyle = .dark
navigationController?.navigationBar.barStyle = .black
let appearance = UINavigationBarAppearance()
appearance.configureWithTransparentBackground()
navigationController?.navigationBar.standardAppearance = appearance
navigationController?.navigationBar.scrollEdgeAppearance = appearance 

上面的 2 行代码,结合 Info.plist 中的设置:设置为 YES,使我能够成功自定义我的状态栏颜色,并在用户单击特定按钮时更改栏颜色。这意味着,当用户单击同一视图控制器上的按钮时,我可以成功地将状态栏颜色设置更改为:View controller-based status bar appearance

navigationController?.navigationBar.overrideUserInterfaceStyle = .light
navigationController?.navigationBar.barStyle = .default

除了首次启动应用程序外,一切都按预期工作。当我杀死应用程序并启动它时,状态栏颜色将是默认的而不是黑色的。我不知道为什么,它只发生在第一次启动应用程序时。例如,请参阅随附的 GIF。

  • 启动应用时,状态栏具有默认样式
  • 离开应用,然后返回应用时,状态栏具有正确的样式:.black

我只在应用程序的第一个屏幕上遇到这个问题,其余的工作只是预期的。想知道是否有人知道这里发生了什么......提前感谢您抽出时间接受采访!

演示 GIF

iOS Swift iPhone UIGuageController 状态栏

评论

0赞 Raja Kishan 10/26/2021
这可能会有所帮助:stackoverflow.com/a/68600926/14733292
0赞 Clément Besson 10/26/2021
谢谢你@RajaKishan但你发布的文章,仅适用于UIViewControllers。在我的示例 (UINavigationControlle) 中,重写 preferredStatusBarStyle 属性将不起作用。看这里: stackoverflow.com/questions/58125973/...
1赞 Dmytro Yashchenko 10/26/2021
@ClémentBesson 在 iOS 15 中,在 UINavigationController 的自定义子类中覆盖 preferredStatusBarStyle 属性工作正常。为什么使用 navigationBar.overrideUserInterfaceStyle?
0赞 Dmytro Yashchenko 10/26/2021
@ClémentBesson 最好直接控制状态栏样式,认为preferredStatusBarStyle。在您提供的代码片段中,没有使用此属性...
0赞 Clément Besson 10/27/2021
@DmytroYashchenko 我真的很感谢你在这里的帮助。事实上,我创建了自己的 UINavigationController 子类 在我的子类中,我覆盖了以下内容: override var preferredStatusBarStyle: UIStatusBarStyle { return myCustomTest ? .darkContent : .lightContent } 现在它像魅力一样工作,非常感谢您的帮助!

答: 暂无答案