为什么它会抛出一个错误,因为“Windows”在iOS 15.0中被弃用:在UIWindowScene.windowsSwiftUI中,在相关窗口场景上使用www.example.com,而不是“?

fiei3ece  于 2023-05-16  发布在  Swift
关注(0)|答案(2)|浏览(279)

我在SwiftUI 2.0中有项目,但当我更新到SwiftUI 3.0时,它会抛出错误
windows
作为
Windows'在iOS 15.0中已弃用:在UIWindowScene.windows相关窗口场景中使用www.example.com
知道吗?

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

0mkxixxg1#

好吧,警告信息相当充分地反映了问题的本质。
苹果真的不推荐使用UIApplication.shared.windows,所以要修复你的警告,你应该使用UIApplication.shared.windows.first?

UIApplication
.shared
.connectedScenes
.flatMap { ($0 as? UIWindowScene)?.windows ?? [] }
.first { $0.isKeyWindow }

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

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

n3h0vuf22#

我是从一个苹果答案里看到这段代码的
如果您有一个视图,那么访问场景关键窗口的最简单方法是调用

view.window.windowScene?.keyWindow

https://developer.apple.com/forums/thread/682621

相关问题