将iphone应用程序转换为iPad,iOS?

时间:2013-02-26 18:31:37

标签: iphone ios xcode ipad universal

我目前有一个iOS iPhone应用程序。

我想做的是让它成为通用的,这样我也可以瞄准iPad。

我做了什么,是去目标并将iOS应用程序目标从iPhone更改为通用。

现在,当我在iPad上运行应用程序时,它会自动调整iPad的所有视图大小。

然而,有些观点,背景图片看起来不那么好,因为我需要使用更高分辨率的图片,或者一般情况下我应该更改iPad版本中的一些内容。

iPad .nib文件在哪里?我的意思是,我只看到iPhone的。当我在我的iphone上运行它时,会使用这些文件。当我在我的iPad上运行它时,一切都正确调整大小,但这些.nib文件到底在哪里?

我读过的教程(相当古老)建议,当你定位iPad时,应该为ipad创建新的.nib文件。为什么我看不到这些文件?

3 个答案:

答案 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文件。