在iPad上显示一件事,在Apple TV上显示另一件事?

时间:2013-07-11 21:12:17

标签: ios ipad apple-tv

我有一个应用程序的想法,但我不确定它是否可能。

我想知道我是否能在iPad(或iPhone)上显示一件事 屏幕,以及同时在Apple电视上完全不同的东西。 例如,一个测验应用程序,其中问题显示在Apple电视上,并且iPad上列出了多个选项供用户选择。

我不确定这是否可行,或者您是否只能将iPad屏幕镜像到Apple电视上。

如果有一些“概念证明”示例代码,我很乐意看看。 非常感谢。 克里斯

1 个答案:

答案 0 :(得分:15)

事实证明,支持两个屏幕非常简单:iOS设备的主屏幕和辅助屏幕(外接显示器或Apple TV上的镜像)。

根据博文Creating a Dual-Screen AirPlay Experience for iOS and Apple TV中的信息,您无需做太多工作。

基本上,您需要检查screens中的UIScreen属性。您还应该收听通知(UIScreenDidConnectNotificationUIScreenDidDisconnectNotification),以便了解在应用运行时屏幕数量是否会发生变化。

有了第二个屏幕后,您需要为它创建一个新窗口。可以使用以下代码:

if ([UIScreen screens].count > 1) {
    if (!_secondWin) {
        UIScreen *screen = [UIScreen screens][1];
        _secondWin = [[UIWindow alloc] initWithFrame:screen.bounds];
        _secondWin.screen = screen;
    }
}

其中_secondWinUIWindow ivar。

设置窗口后,创建一个视图控制器,使其成为窗口的根视图控制器,并显示窗口:

SomeViewController *vc = [[SomeViewController alloc] init...];
_secondWin.rootViewController = vc;
_secondWin.hidden = NO;

除了正确处理通知之外,这几乎不是。请记住,您无法在第二个显示屏上获得任何触摸事件,因此请确保您显示的内容基本上只显示。

根据您的应用程序,您可能会在应用程序的整个生命周期内使用第二个屏幕/窗口(只要第二个屏幕可用,任何方式)。或者您可能只在某些情况下创建和使用第二个窗口/屏幕。当您没有设置第二个窗口/屏幕时,您的应用程序将被镜像到第二个显示器或Apple TV。

最后一部分是打开Apple TV的镜像。这是在iOS设备上完成的,而不是在应用程序中完成。

我链接的博客文章还有一些值得审阅的细节。