gpt4 book ai didi

ios - UIWindow 不显示 iOS 13 中的内容

转载 作者:搜寻专家 更新时间:2023-10-31 08:03:36 26 4
gpt4 key购买 nike

我正在升级我的应用程序以使用 iOS 13 中定义的新 UIScene 模式,但是该应用程序的一个关键部分已停止工作。我一直在使用 UIWindow 来覆盖屏幕上的当前内容并向用户呈现新信息,但在我正在使用的当前测试版 (iOS + XCode beta 3) 中,窗口会出现,但马上就消失了。

这是我使用的代码,现在不起作用:

let window = UIWindow(frame: UIScreen.main.bounds)
let viewController = UIViewController()
viewController.view.backgroundColor = .clear
window.rootViewController = viewController
window.windowLevel = UIWindow.Level.statusBar + 1
window.makeKeyAndVisible()
viewController.present(self, animated: true, completion: nil)

我已经尝试了很多方法,包括使用 WindowScenes 来呈现新的 UIWindow,但找不到任何实际的文档或示例。

我的一次尝试(没有用 - 与窗口出现和立即关闭的行为相同)

let windowScene = UIApplication.shared.connectedScenes.first
if let windowScene = windowScene as? UIWindowScene {
let window = UIWindow(windowScene: windowScene)
let viewController = UIViewController()
viewController.view.backgroundColor = .clear
window.rootViewController = viewController
window.windowLevel = UIWindow.Level.statusBar + 1
window.makeKeyAndVisible()
viewController.present(self, animated: true, completion: nil)
}

在 iOS 13 测试版中有人能够做到这一点吗?

谢谢

编辑

从提出这个问题到 iOS 13 的最终版本发布已经过去了一段时间。下面有很多答案,但几乎所有答案都包含一件事——Adding a strong/stronger reference to the UIWindow。您可能需要包含一些与新场景相关的代码,但请先尝试添加强引用。

最佳答案

我在为 iOS 13 场景模式升级代码时遇到了同样的问题。使用您的第二个代码片段的一部分,我设法修复了所有问题,因此我的窗口再次出现。除了最后一行,我和你做的一样。尝试删除 viewController.present(...)。这是我的代码:

let windowScene = UIApplication.shared
.connectedScenes
.filter { $0.activationState == .foregroundActive }
.first
if let windowScene = windowScene as? UIWindowScene {
popupWindow = UIWindow(windowScene: windowScene)
}

然后我像你一样展示它:

popupWindow?.frame = UIScreen.main.bounds
popupWindow?.backgroundColor = .clear
popupWindow?.windowLevel = UIWindow.Level.statusBar + 1
popupWindow?.rootViewController = self as? UIViewController
popupWindow?.makeKeyAndVisible()

无论如何,我个人认为问题出在 viewController.present(...) 中,因为您显示一个带有该 Controller 的窗口并立即显示一些“ self ”,所以这取决于什么“ self ”确实是。

另外值得一提的是,我在我的 Controller 中存储了对您正在移动的窗口的引用。如果这对你还是没用我只能展示我的小repo使用此代码的。查看 AnyPopupController.swiftPopup.swift 文件。

希望对您有所帮助,@SirOz

关于ios - UIWindow 不显示 iOS 13 中的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57060606/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com