UIWindow 及其内容未在 Xcode 11 iOS 13 中显示。出现黑屏
Posted
技术标签:
【中文标题】UIWindow 及其内容未在 Xcode 11 iOS 13 中显示。出现黑屏【英文标题】:UIWindow and it's content not showing in Xcode 11 iOS 13. Getting black screen 【发布时间】:2020-04-02 12:08:41 【问题描述】:我有一个在 Xcode 10.2 中开发的 Swift 项目,它运行良好。我已将我的代码从 Xcode 10.2 迁移到 Xcode 11.3。因为在此之后我的应用程序无法正常工作。每当我尝试添加窗口时,它的内容都不会显示,它完全是后屏。
我在控制台中收到此错误:
- [Window] 不再支持手动将 rootViewController 的视图添加到视图层次结构中。请允许 UIWindow 将 rootViewController 的视图添加到视图层次结构本身。
这是我的代码:
fileprivate(set) var topOverlayWindow = UIWindow()
override func viewWillAppear(_ animated: Bool)
super.viewWillAppear(animated)
self.topOverlayWindow.windowLevel = UIWindow.Level(rawValue: CGFloat.greatestFiniteMagnitude)
self.topOverlayWindow.backgroundColor = NSUtility.editVideoThemeColor
self.topOverlayWindow.frame = CGRect(x: 0.0, y: 0.0, width: 56, height: 45)
self.topOverlayWindow.rootViewController = KAPPDELEGATE?.window?.rootViewController;
self.topOverlayWindow.alpha = 1.0
self.topOverlayWindow.isHidden = false
self.topOverlayWindow.makeKeyAndVisible()
【问题讨论】:
我找到了解决方案。现在它在 ios 12 和 Xcode 11 的 iOS 13 中运行良好。在上面的代码中,我只是将这个 self.topOverlayWindow.rootViewController = KAPPDELEGATE?.window?.rootViewController 替换为下面提到的代码 self.topOverlayWindow.rootViewController = UIViewController() // 或者你可以将引用传递给任何新的控制器休息一切都很好。参考来自这里:***.com/questions/57060606/… 【参考方案1】:我得到了解决方案。现在它在 iOS 12、来自 Xcode 11 的 iOS 13 中也可以正常工作。
在上面的代码中我只是替换了这个
self.topOverlayWindow.rootViewController = KAPPDELEGATE?.window?.rootViewController
下面提到的代码
self.topOverlayWindow.rootViewController = UIViewController()
// 或者你可以传递对任何新控制器的引用休息一切都很好。 Ref 取自这里:
UIWindow not showing over content in iOS 13
【讨论】:
以上是关于UIWindow 及其内容未在 Xcode 11 iOS 13 中显示。出现黑屏的主要内容,如果未能解决你的问题,请参考以下文章
iOS-Xcode11: 删除默认Main.storyBoard, 自定义UIWindow不能在AppDelegate中处理,新增SceneDelegate代理