小编Mgl*_*aRu的帖子

iOS 16 中的状态栏颜色

感谢您花时间帮助他人。

这是原帖,我发布在这里也希望有更好的运气。谢谢!

问题描述:

我们的 SwiftUI 应用程序最低部署是 iOS 14。仅在 iOS 16 中,我们就一直在努力解决状态栏颜色问题。

我们无法将其颜色/外观从浅色更改为深色。

以前的有效解决方案(iOS 13 到 iOS 15)

从现在开始,我们习惯用...来管理外观。

1-当给定条件时,在特定视图中调用,例如不支持暗模式,或者侧菜单已打开

UIApplication.setStatusBarStyle(.darkContent)
Run Code Online (Sandbox Code Playgroud)

2- 在任何 SwiftUI 视图上支持此功能的扩展

import UIKit

extension UIApplication {
    class func setStatusBarStyle(_ style: UIStatusBarStyle) {
        if let controller = UIApplication.getKeyWindow()?.rootViewController as? ContentHostingController {
            controller.changeStatusBarStyle(style)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

3-实际上,控制器类

import SwiftUI
import UIKit

class ContentHostingController: UIHostingController<AnyView> {

  private var currentStatusBarStyle: UIStatusBarStyle = .default

  override var preferredStatusBarStyle: UIStatusBarStyle {
    currentStatusBarStyle
  }

  func changeStatusBarStyle(_ style: UIStatusBarStyle) {
    self.currentStatusBarStyle = style …
Run Code Online (Sandbox Code Playgroud)

ios swift swiftui

6
推荐指数
1
解决办法
2602
查看次数

标签 统计

ios ×1

swift ×1

swiftui ×1