2015-12-08 42 views
1

我试图在使用AirPlay镜像时获取外部屏幕(如电视机)的UIWindow对象。棘手的部分:它真的是AirPlay 镜像,而不是一个单独的显示,因为我们正在使用AirPlay的内置功能,而不是设置一个新的UIWindow对象并将其分配给新屏幕。我的老板希望应用以各种方式镜像设备,但要能够将子视图(教程叠加层)专门添加到外部窗口,方法是将它们添加到辅助屏幕的UIWindow。获取AirPlay镜像屏幕的UIWindow

我试了一下:

  • 我可以得到二次UIScreen对象容易,无论是从UIScreenDidConnectNotification[UIScreen screens],但as far as I know UIScreens没有到一个UIWindow正在显示的引用。
  • 由于我们仅使用AirPlay自动生成的显示,因此无法在创建期间保存对UIWindow的引用。
  • 我检查了[[UIApplication sharedApplication] windows],它似乎没有包含与外部显示器相关联的UIWindow。 (至少,没有window.screen对象的匹配UIScreen对象,我从UIScreenDidConnectNotification获得当电视首次连接,并同时[[UIScreen screens] count] 1上升时,一台电视机连接,窗口的数量保持不变。)

有没有办法使用AirPlay镜像访问第二屏幕的窗口?或者,是否有办法有效实现设备的应用程序范围镜像,从而更好地控制与电视相关联的UIWindow对象?

+1

是不是镜像的原理,它显示内部屏幕相同的东西,所以它是同一个窗口? Apple文档说,默认情况下,外部屏幕会镜像内部屏幕,并且通过在该屏幕上创建窗口来停止镜像,并通过移除窗口来重新启用它。所以,当镜像时,外部屏幕没有任何窗口。 – jcaron

回答

2

本文来自苹果: https://developer.apple.com/library/ios/documentation/WindowsViews/Conceptual/WindowAndScreenGuide/UsingExternalDisplay/UsingExternalDisplay.html

指出:

要重新启用显示独特的内容后,镜像,只需删除 您从正确的画面对象创建的窗口。

这意味着当镜像处于活动状态时,没有窗口链接到它,并且镜像仅使用主屏幕的窗口。

只有一个窗口,我不认为可以在此模式下显示不同的内容。

如果要显示不同的内容,您必须创建一个新窗口并将其分配到该屏幕。

+0

Arg,这就是我所害怕的。无论哪种方式,谢谢你的回应! – Nerrolken