为什么在 SwiftUI 中抛出错误,因为“'windows' 在 iOS 15.0 中已被弃用:在相关的 window 场景中使用 UIWindowScene.windows 而不是”?

Why it is throw an error as "'windows' was deprecated in iOS 15.0: Use UIWindowScene.windows on a relevant window scene instead" in SwiftUI?

我在 SwiftUI 2.0 中有一个项目,但是当我更新到 SwiftUI 3.0 时,它抛出一个错误

windows

作为

windows' was deprecated in iOS 15.0: Use UIWindowScene.windows on a relevant window scene instead

有什么想法吗?

.padding(.top, UIApplication.shared.windows.first?.safeAreaInsets.top)

嗯,警告消息非常充分地反映了问题的本质。

Apple 确实弃用了 UIApplication.shared.windows,因此要修复您的警告,您应该使用:

而不是 UIApplication.shared.windows.first?
UIApplication
.shared
.connectedScenes
.flatMap { ([=10=] as? UIWindowScene)?.windows ?? [] }
.first { [=10=].isKeyWindow }

然后,您的 .padding 视图修饰符将如下所示:

.padding(.top, UIApplication
                    .shared
                    .connectedScenes
                    .flatMap { ([=11=] as? UIWindowScene)?.windows ?? [] }
                    .first { [=11=].isKeyWindow }?.safeAreaInsets.top)