【问题标题】:How to resolve : 'windows' was deprecated in iOS 15.0 [duplicate]如何解决:iOS 15.0 中已弃用“windows”[重复]
【发布时间】:2021-11-18 08:44:20
【问题描述】:

我一直在使用以下代码行获取界面方向。

let orientation = UIApplication.shared.windows.first?.windowScene?.interfaceOrientation

但是,我的新应用针对的是 iOS 15 及更高版本,我现在收到警告 'windows' was deprecated in iOS 15.0: Use UIWindowScene.windows on a relevant window scene instead

如何消除此警告以及在 iOS 15 中检索设备方向的最佳方法是什么?

【问题讨论】:

    标签: ios swift uiinterfaceorientation


    【解决方案1】:

    我在另一个question 中发现,解决此警告的一种方法是改用视图窗口和窗口场景来获取界面方向

    let orientation = self.view.window?.windowScene?.interfaceOrientation
    

    警告现在消失了。感谢@Marian König 的回答

    【讨论】:

    • 警告不仅消失了,如果您的应用使用airplay在第二个屏幕上显示视图,它现在也是正确的。
    【解决方案2】:

    您应该以UIApplication.shared.connectedScenes 开头。你可能只有一个。

    【讨论】:

    • 是的,您也可以使用已连接的场景访问相同的 interfaceOrientation,方法是首先像 guard let windowScene = UIApplication.shared.connectedScenes.first as? UIWindowScene else { return } 那样抓取 UIWindowScene,但是,这与我在下面的答案中使用的 UIWindowScene 相同。下面的答案得到了活动视图的窗口场景,而不仅仅是第一个。
    • 好吧,如果您在 iPad 上确实有多个场景/窗口,这只是一个问题。我打赌你可能不会。这就是为什么我说你只有一个。
    • 没错,在这种特殊情况下我不会。如果您在 iPadOS 上,我的回答会给您当前的 活动 窗口吗?
    • 我不明白这个问题。如果你只有一个窗口,你就只有一个窗口。
    • 我想知道应该安全地跨 iOS 和 iPadOS 使用哪个。换句话说,这适用于我的情况,但我希望接受的答案是解决此弃用问题的更好替代方案。
    猜你喜欢
    • 1970-01-01
    • 2023-01-16
    • 1970-01-01
    • 2021-09-20
    • 2020-03-04
    • 2019-11-29
    • 1970-01-01
    相关资源
    最近更新 更多