获取AirPlay镜像屏幕的UIWindow



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

我尝试过的:

  • 我可以很容易地从UIScreenDidConnectNotification[UIScreen screens]获取辅助UIScreen对象,但据我所知,UIScreen没有显示UIWindow的引用
  • 由于我们只是使用AirPlay自动生成的显示器,所以在创建UIWindow时我无法保存对它的引用
  • 我已经检查了[[UIApplication sharedApplication] windows],它似乎不包括与外部显示器关联的UIWindow。(至少,当电视第一次连接时,没有一个window.screen对象与我从UIScreenDidConnectNotification获得的UIScreen对象匹配,而当电视连接时,[[UIScreen screens] count]增加了1,窗口数保持不变。)

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

此文档来自Apple:https://developer.apple.com/library/ios/documentation/WindowsViews/Conceptual/WindowAndScreenGuide/UsingExternalDisplay/UsingExternalDisplay.html

声明:

要在显示唯一内容后重新启用镜像,只需删除从相应的屏幕对象创建的窗口。

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

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

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

最新更新