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代理

Xcode 11 未在 SwiftUI 中显示对象库

故事板未在 Xcode 11 中删除

Swift UI Canvas 未在 macOS 10.15 和 Xcode 11.1 中显示

iOS13 ,xcode11新建项目真机运行出现黑屏

UIWindow中的iOS UIScrollView