我有一个应用程序的想法,但我不确定它是否可能。
我想知道我是否能在iPad(或iPhone)上显示一件事 屏幕,以及同时在Apple电视上完全不同的东西。 例如,一个测验应用程序,其中问题显示在Apple电视上,并且iPad上列出了多个选项供用户选择。
我不确定这是否可行,或者您是否只能将iPad屏幕镜像到Apple电视上。
如果有一些“概念证明”示例代码,我很乐意看看。 非常感谢。 克里斯
答案 0 :(得分:15)
事实证明,支持两个屏幕非常简单:iOS设备的主屏幕和辅助屏幕(外接显示器或Apple TV上的镜像)。
根据博文Creating a Dual-Screen AirPlay Experience for iOS and Apple TV中的信息,您无需做太多工作。
基本上,您需要检查screens
中的UIScreen
属性。您还应该收听通知(UIScreenDidConnectNotification
和UIScreenDidDisconnectNotification
),以便了解在应用运行时屏幕数量是否会发生变化。
有了第二个屏幕后,您需要为它创建一个新窗口。可以使用以下代码:
if ([UIScreen screens].count > 1) {
if (!_secondWin) {
UIScreen *screen = [UIScreen screens][1];
_secondWin = [[UIWindow alloc] initWithFrame:screen.bounds];
_secondWin.screen = screen;
}
}
其中_secondWin
是UIWindow
ivar。
设置窗口后,创建一个视图控制器,使其成为窗口的根视图控制器,并显示窗口:
SomeViewController *vc = [[SomeViewController alloc] init...];
_secondWin.rootViewController = vc;
_secondWin.hidden = NO;
除了正确处理通知之外,这几乎不是。请记住,您无法在第二个显示屏上获得任何触摸事件,因此请确保您显示的内容基本上只显示。
根据您的应用程序,您可能会在应用程序的整个生命周期内使用第二个屏幕/窗口(只要第二个屏幕可用,任何方式)。或者您可能只在某些情况下创建和使用第二个窗口/屏幕。当您没有设置第二个窗口/屏幕时,您的应用程序将被镜像到第二个显示器或Apple TV。
最后一部分是打开Apple TV的镜像。这是在iOS设备上完成的,而不是在应用程序中完成。
我链接的博客文章还有一些值得审阅的细节。