将iPhone App转换为iPad时需要帮助

时间:2010-09-27 07:40:32

标签: iphone ios4

我正在使用最新的Xcode,我创建了一个基于视图的通用应用程序,并开始专注于iPhone,现在我必须把它放在iPad上。我没有在开发中使用Interface构建器,因为从一开始就期望更多的动态屏幕更改。在代码中,我已将所有屏幕都放在CGRECTMake(0,0,320,480)。

现在,当我尝试在iPad模拟器中运行应用程序时,应用程序会粘到模拟器的顶角,宽度为320,高度为480,屏幕的其余部分看起来是白色屏幕中间有边框和2x选项。

我已将.plist文件中的主nib文件基本名称(iPad)属性设置为我的iPhone XIB名称。我知道这是应用程序坚持到顶部的一个主要原因,但如何使这个通用并使我的应用程序在iPad中看起来正确?

请帮助

2 个答案:

答案 0 :(得分:3)

如果以编程方式创建视图,则必须设置两次大小的内容,一次用于iPhone / iPod,一次用于iPad。你可以这样做:

if ([Utils isIPad]) {
  rect = CGRectMake(0,0,640,1024);
}
else {
  rect = CGRectMake(0,0,320,480);      
}

[Utils isIPad]会是这样的:

+ (BOOL)isIPad {
#ifdef UI_USER_INTERFACE_IDIOM
    return (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad);
#else
    return NO;
#endif
}

使用nibs执行此操作更容易,更快捷。在这种情况下你只需要使用正确的笔尖。类似的东西:

if ([Utils isIPad]) {
    login = [[LoginController alloc] initWithNibName:@"LoginController-iPad" bundle:nil];               
}
else {
    login = [[LoginController alloc] initWithNibName:@"LoginController" bundle:nil];
}

答案 1 :(得分:2)

为了回应dkk的回答,使用主屏幕的应用程序框架会不会更方便?这将返回正确的帧大小,具体取决于设备,无需手动检查或硬编码的屏幕尺寸。

[UIScreen mainScreen] applicationFrame]

更多信息:UIScreen Class Reference,请参阅applicationFrame属性