我目前有一个iOS iPhone应用程序。
我想做的是让它成为通用的,这样我也可以瞄准iPad。
我做了什么,是去目标并将iOS应用程序目标从iPhone更改为通用。
现在,当我在iPad上运行应用程序时,它会自动调整iPad的所有视图大小。
然而,有些观点,背景图片看起来不那么好,因为我需要使用更高分辨率的图片,或者一般情况下我应该更改iPad版本中的一些内容。
iPad .nib文件在哪里?我的意思是,我只看到iPhone的。当我在我的iphone上运行它时,会使用这些文件。当我在我的iPad上运行它时,一切都正确调整大小,但这些.nib文件到底在哪里?
我读过的教程(相当古老)建议,当你定位iPad时,应该为ipad创建新的.nib文件。为什么我看不到这些文件?
答案 0 :(得分:2)
您可以让iOS根据扩展名自动加载正确的xib,类似于Retina图形的工作方式。如果您的xib名为Awesome
,并且您希望将其转换为拥有iPhone 和的iPad版本(而不是共享,请将其重命名为:
iPhone版:
Awesome~iphone
iPad版:
Awesome~ipad
然后,当你告诉iOS加载Awesome
时,它会根据当前平台自动选择加载哪一个。您的代码中不需要if
语句!如果你想要,你仍然可以,但这不是必需的。
注意:您可能需要在重命名后执行清理!有时一些文件在重命名时会在构建中出现。
答案 1 :(得分:1)
您只需要创建新的.xib文件并将它们设置为同一个类,然后您可以使用以下条件初始化该viewController:
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
yourVC = [[YourViewController alloc] initWithNibName:"YourViewController_ipad" andBundle:nil];
}
else
{
yourVC = [[YourViewController alloc] initWithNibName:"YourViewController" andBundle:nil];
}
只要有可能,你应该尝试使用相同的.xib,但在很多情况下,不可能这样做并且看起来很好,所以你只需要做一秒。 Xcode不会自动为您完成。
答案 2 :(得分:1)
假设你有一堂课。我们称之为Two
。
以下是组成Two
类的当前文件。
Two.h
Two.m
Two.xib
Two.xib
包含适用于iPhone的UIView
大小。为了制作适合iPad的视图,您应该创建一个新的XIB文件(将其命名为Two_iPad.xib
),将XIB连接到Two
,调整UIView
中的Two_iPad.xib
的大小对于iPad,并相应地进行设计。
在创建Two
的新实例时,请执行以下操作。
Two *two;
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
//they are using an iPad
two = [[Two alloc] initWithNibName:@"Two_iPad" bundle:nil];
} else {
//they are using an iPhone/iPod Touch
two = [[Two alloc] initWithNibName:@"Two" bundle:nil];
}
您正在创建Two
的新实例;但是,您正在检查用户使用的设备,并使用相应的XIB文件。