关于 Airplay 的设计/架构问题。
我在 AppDelegate 中设置了外部显示器:
UIScreen *externalScreen = UIScreen.screens.lastObject;
self.externalWindow = [[UIWindow alloc] initWithFrame:externalScreenFrame];
self.externalWindow.screen = externalScreen;
self.externalWindow.backgroundColor = [UIColor redColor];
工作正常,电视以红色显示空屏幕。
现在我有一个带有一堆子视图的 ViewController,并且一个视图应该显示在设备上and外部屏幕。如果我在 ViewController.m 中尝试这个:
[_appDelegate.externalWindow addSubview:self.deviceAndTVView];
deviceAndTVView 将仅显示在外部屏幕上,不再显示在设备上。
我需要的是在设备上安装 deviceAndTVView,在触摸/用户交互时更新自身,并将这些更新镜像到外部屏幕上。
哪条是实现这一目标的正确途径?
谢谢阅读!
米
AirPlay 镜像技术的名字并不好听。它实际上以两种模式运行,一种模式是整个 iOS 设备镜像到 AirPlay 设备,另一种模式是一旦连接了镜像 AirPlay 设备,开发人员就有两个 UIWindow/UIScreen 可以使用。
您使用的是后一种模式,通常称为“镜像”,但实际上您有一个完全独立的窗口/屏幕需要管理,并且应该有更好的术语来指代这种操作模式。
你上面描述的基本上是moving一个从设备窗口到 AirPlay 窗口的 UIView,它完全按照预期工作!
没有任何技术方法可以让您拥有单实例UIView 的显示在这两个窗口上 - 它将存在于一个 UIView 层次结构或另一个 UIView 层次结构中,但不能同时存在于两个 UIView 层次结构中。换句话说,如果您希望在两个屏幕上显示相同的内容,则需要创建两个实例相同的UIView,并将它们分别添加到两个窗口中,然后在它们发生变化时更新它们。
虽然这可能不是您所期望的超级方便的“镜像”,但这可能是一件好事,因为您的 UIView 在设备上的宽高比可能与在 AirPlay 设备上的不同。通过使用两个不同的视图来显示相同的内容,您可以调整 AirPlay 视图的大小,以最佳地利用设备的可用分辨率。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)