微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ios – Airplay:外部窗口镜像子视图

关于airplay的设计/建筑问题.
我在AppDelegate中设置了外部显示
UIScreen *externalScreen = UIScreen.screens.lastObject;
self.externalWindow = [[UIWindow alloc] initWithFrame:externalScreenFrame];
self.externalWindow.screen = externalScreen;
self.externalWindow.backgroundColor = [UIColor redColor];

电视显示为红色的空白屏幕.
现在我有一个ViewController的一些子视图,一个视图应该显示在设备和外部屏幕上.如果我在ViewController.m中尝试这个:

[_appDelegate.externalWindow addSubview:self.deviceAndTVView];

deviceAndTVView只会显示在外部屏幕上,而不是在设备上显示.
我需要的是在设备上安装deviceAndTVView,在触摸/用户交互上更新自己,并在外部屏幕上镜像这些更新.

哪个是正确的道路呢?

谢谢阅读!

解决方法

称为AirPlay镜像的技术命名不佳.它实际上以两种模式运行,一种是将整个iOS设备镜像到AirPlay设备,另一种模式下,一旦连接了镜像AirPlay设备,开发人员就可以使用两个UIWindow / UIScreen.

您正在使用后一种模式,通常被称为“镜像”,但是您真的有一个完全独立的窗口/屏幕进行管理,应该有更好的术语来指代这种操作模式.

上面所描述的内容基本上是将UIView从设备窗口移动到AirPlay窗口,它的工作原理与之一致!

没有一种技术方法可以在这两个窗口上都有一个UIView show的单一实例 – 它将存在于一个UIView层次结构中,而不是同时存在.换句话说,如果你想要在两个屏幕上显示相同的东西,你需要创建同一个UIView的两个实例,并将它们分别添加到两个窗口中,然后在它们更改时更新它们.

虽然这可能不是你期待的超级“镜像”,但这可能是一件好事,因为您的UIView可能在设备上具有与AirPlay设备不同的纵横比.通过具有两个不同的视图,显示相同的内容,您可以调整AirPlay视图的大小以最好地利用设备的可用分辨率.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐