0

我想创建一个 iPad 应用程序,除了普通的 ipad 屏幕 (4:3) 之外,如果附加了第二个屏幕,它还使用包含 16:9 宽屏格式的 UIWindow 的第二个 UIScreen。
我使用 AppleTV 进行连接。

我不只是想将 ipad 屏幕镜像到电视上,因为它只是一个 4:3 的画面——我想让它使用整个 16:9 宽屏。

所以我开始并设置了第二个 UIScreen,窗口现在以宽屏格式显示在电视上,背景为绿色。

//Check for Second Screen and if available, make a second UIWindow and put it on the      second screen
NSArray* connectedScreens = [UIScreen screens];
NSInteger numberOfScreens = [[UIScreen screens]count];
NSLog(@"Number of screens connected: %d",numberOfScreens);

if (numberOfScreens > 1) {
    //we have a second screen connected, display an extra window on the second screen
    UIScreen* secondScreen = [connectedScreens lastObject];
    UIWindow* secondWindow = [[UIWindow alloc]initWithFrame:secondScreen.bounds];
    secondWindow.backgroundColor = [UIColor greenColor];
    [secondWindow setScreen: secondScreen];
    [secondWindow makeKeyAndVisible];
    self.tvWindow = secondWindow;
}

到目前为止,一切都很好。

但现在我不确定如何设置导航/视图层次结构。

我想在两个 UIScreens(ipad + TV)上显示相同的数据,只是针对不同的屏幕尺寸进行了优化。

因为我有应该显示的完全相同的数据,并且我不想让类似 viewControllers 的不同实例漂浮在周围,所以我想我可以为每个 ViewController 使用两个 xib 文件,一个用于放入“视图”的 4:3 ipad 视图' viewController 的属性和 16:9 宽屏电视的一个 xib,放入同一 viewController 的 'tvView' 属性中。

ipad UIWindow 有一个 UINavigationController 旋转不同的 UIViewControllers。

因此,如果我将 ViewController 推到 ipad Window 的 Navigationcontroller 上,我可以将 TV-xib 中的相应 tvView 添加到 TV 屏幕的 UIWindow。

我在正确的道路上吗?你会怎么做?

一个小草图: 查看层次结构草图 :)

4

1 回答 1

0

这听起来很对。如果您允许用户与导航控制器进行交互,则必须注册为控制器,delegate以便跟踪 iPad 上的导航堆栈发生的情况并相应地更换您的电视视图。

于 2012-07-10T17:35:13.803 回答