SwiftUI - 'windows' 在 iOS 15.0 中已弃用:使用 UIWindowScene.windows

Posted

技术标签:

【中文标题】SwiftUI - \'windows\' 在 iOS 15.0 中已弃用:使用 UIWindowScene.windows【英文标题】:SwiftUI - 'windows' was deprecated in iOS 15.0: Use UIWindowScene.windowsSwiftUI - 'windows' 在 iOS 15.0 中已弃用:使用 UIWindowScene.windows 【发布时间】:2021-11-07 20:21:00 【问题描述】:

我有以下代码块:

struct ***: View 
    var body: some View 
        Text("Hello, World!")
            .padding(.bottom,UIApplication.shared.windows.first?.safeAreaInsets.bottom ?? 15)
    

但是,这会返回以下错误:

'windows' 在 ios 15.0 中已弃用:改为在相关窗口场景上使用 UIWindowScene.windows

我尝试使用 UIWindowScene.windows,但它无法以某种方式工作。任何想法如何将其转换为新语法?

【问题讨论】:

在窗口上使用safeAreaInsets真的很重要吗?与尝试查询 UIWindow 相比,SwiftUI 对内置的安全区域有更好的原生支持 这能回答你的问题吗? How to get rid of message " 'windows' was deprecated in iOS 15.0: Use UIWindowScene.windows on a relevant window scene instead" with AdMob banner? 【参考方案1】:
struct ***: View 
    
    var body: some View 
        let windowScene = UIApplication.shared.connectedScenes.first as? UIWindowScene
        let window = windowScene?.windows.first

        Text("Hello, World!")
           .padding(.bottom, window?.safeAreaInsets.bottom ?? 15)
     

取决于您的需要,这里有更多关于此的内容:

    https://developer.apple.com/documentation/swiftui/text/padding(_:)-5wi61

    https://www.hackingwithswift.com/quick-start/swiftui/how-to-inset-the-safe-area-with-custom-content

    SwiftUI how to adjust different screen sizes

    https://developer.apple.com/news/?id=nixcb564

    https://developer.apple.com/design/human-interface-guidelines/ios/visual-design/adaptivity-and-layout/

【讨论】:

请记住,Stack Overflow 不仅仅是为了解决眼前的问题,而是为了帮助未来的读者找到类似问题的解决方案,这需要了解底层代码。这对于我们社区的初学者和不熟悉语法的成员来说尤其重要。鉴于此,您能否edit 回答您正在做的事情的解释以及为什么您认为这是最好的方法?

以上是关于SwiftUI - 'windows' 在 iOS 15.0 中已弃用:使用 UIWindowScene.windows的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI-混合开发

在 iOS16 中用 SwiftUI 图表定制一个线图

iOS 15 中的 Swift 和 SwiftUI

SwiftUI:在 iOS 14 上点击返回时导航链接崩溃,但在 iOS 13 上没有

SwiftUI:有没有办法创建一个单选列表(比如在 iOS 设置中)?

SwiftUI - edgesIgnoringSafeArea 在 iOS 13.4 中的行为不同