MDCOverlayWindow没有激活或显示任何内容

我正在尝试创建一个叠加层,我可以在任何视图控制器中使用该叠加层来托管可拖动视图的预览图像。

从我的AppDelegate.swift

import UIKit
import MaterialComponents

var myoverlayWindow: MDCOverlayWindow?

@UIApplicationmain
class AppDelegate: UIResponder,UIApplicationDelegate {

    var window: UIWindow?

    func application(_ application: UIApplication,didFinishlaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        window!.overrideUserInterfaceStyle = .dark
        // Override point for customization after application launch.
        myoverlayWindow = MDCOverlayWindow.init(windowScene: window!.windowScene!)
        return true
    }


}

以及另一个View Controller中:

func showOverlay() {
    let testView = UIView(frame: CGRect(x: 0,y: 0,width: 500,height: 500))
    testView.backgroundColor = .systemRed
    myoverlayWindow!.activateOverlay(testView,withLevel: .normal)
    print("overlay should show")
}

为什么重叠式广告无法激活并显示testView?我是否错误地实例化了MDCOverlayWindow?

iCMS 回答:MDCOverlayWindow没有激活或显示任何内容

MDCOverlayWindow必须是UIKit附加到屏幕的实际窗口。您创建了一个实例并将其保存在属性中。但是您没有告诉UIKit该窗口。想必您正在使用情节提要。情节提要实例化过程将UIWindow与UIKit附加在一起,并且所有场景均在该窗口中呈现。老实说,我不确定您是否可以使用情节提要指定自定义窗口类。我打开了一个基于情节提要的项目并四处查看,但是在检查器中没有看到任何窗口自定义选项。

如果您不使用情节提要,则可以创建窗口并将其附加到屏幕,如下所示:(应用程序摘录:didFinishLaunching:)

  window = MDCOverlayWindow(frame:UIScreen.main.bounds)
  window!.rootViewController = LaunchViewController()
  window!.backgroundColor = UIColor.white
  window!.makeKeyAndVisible() // this is the key: window is actually rendered
本文链接:https://www.f2er.com/2224246.html

大家都在问