我想创建一个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的'view'属性和16:9宽屏电视的一个xib,放入同一viewController的'tvView'属性。
ipad UIWindow有一个旋转不同UIViewControllers的UINavigationController。
因此,如果我将ViewController推到ipad Window的Navigationcontroller上,我可以将TV-xib中相应的tvView添加到电视屏幕的UIWindow。
我在正确的道路上吗? 你会怎么做?
一个小草图: :)答案 0 :(得分:0)
这听起来不错。如果您允许用户与导航控制器进行交互,则必须注册为控制器delegate
,以便您可以跟踪iPad上导航堆栈的内容并相应地更换电视视图。 / p>