3

我正在开发一个使用外部显示器的应用程序。我有很多不同的视图和控件,这些视图和控件是根据我从服务器获得的数据动态创建的。

所以可以说这个视图是动态创建的,并显示在 iPad 屏幕上(不是全屏):

在此处输入图像描述

偏离路线很难控制和检测用户更改了哪个控制值,特别是滚动查看器和幻灯片以在外部显示器上实时显示更改。

有没有办法不给每个控件添加事件,然后在外部屏幕上修改控件实例,而只创建一个虚拟反射,UIView在 iPad 上显示真实的实时变化?

4

1 回答 1

3

AirPlay镜像是您正在寻找的。AirPlay 可以在两种模式下运行:

  • 整个屏幕镜像到 AirPlay 设备
  • 有两个UIWindow/UIScreen可以使用,其中一个是镜像的。

由于您要镜像的视图不是全屏的。你必须选择第二个选项。不幸的是,没有技术方法可以UIView在两个窗口上显示单个实例。

选项 1 - 双视图

如果要在两个屏幕上显示相同的内容,则需要创建相同的两个实例UIView,并将它们分别添加到两个窗口中,然后在它们更改时更新它们。

选项 2 - UISnapshotting

另一种选择是设置一个计时器并更新您想要每秒显示几次的窗口内容。随着 iOS 7 Apple 的推出UISnapshotting,他们声称它真的很快,比renderInContext:. 我还没有研究过它的性能是否足够高,可以每秒调用很多次,但它应该可以工作。

UIView *snapshot = [view snapshotViewAfterScreenUpdates:YES];

此方法从渲染服务器捕获屏幕的当前视觉内容,并使用它们来构建新的快照视图。您可以使用返回的快照视图作为应用程序中屏幕内容的视觉替代。(...) 这种方法比尝试自己将屏幕内容渲染为位图图像要快。

此外,请查看下面的链接。他们应该给你一些见解并指出正确的方向。

于 2014-07-16T09:12:09.820 回答