我正在使用最新的Xcode,我创建了一个基于视图的通用应用程序,并开始专注于iPhone,现在我必须把它放在iPad上。我没有在开发中使用Interface构建器,因为从一开始就期望更多的动态屏幕更改。在代码中,我已将所有屏幕都放在CGRECTMake(0,0,320,480)。
现在,当我尝试在iPad模拟器中运行应用程序时,应用程序会粘到模拟器的顶角,宽度为320,高度为480,屏幕的其余部分看起来是白色屏幕中间有边框和2x选项。
我已将.plist文件中的主nib文件基本名称(iPad)属性设置为我的iPhone XIB名称。我知道这是应用程序坚持到顶部的一个主要原因,但如何使这个通用并使我的应用程序在iPad中看起来正确?
请帮助
答案 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属性