UIWindow及其内容未在Xcode 11 iOS 13中显示。

时间:2020-04-02 12:08:41

标签: ios13 xcode11 uiwindow rootviewcontroller

我有一个用Xcode 10.2开发的Swift项目,它运行良好。我已将代码从Xcode 10.2 迁移到Xcode 11.3 。由于此后我的应用程序无法正常工作。每当我尝试添加窗口时,它的内容都不会显示,并且完全是后退屏幕。

我在控制台中收到此错误:

-[窗口]不再支持将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()
}

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。现在,它在Xcode 11的 iOS 12,iOS 13 中也能正常工作。

在上面的代码中,我只是替换了

self.topOverlayWindow.rootViewController = KAPPDELEGATE?.window?.rootViewController 

带有下面提到的代码

self.topOverlayWindow.rootViewController = UIViewController()

//或者您可以将引用传递给任何新控制器,其余一切都很好。裁判从这里拿走了:

UIWindow not showing over content in iOS 13