迁移到通用应用程序(iPhone / iPad)

时间:2011-11-30 17:08:26

标签: iphone ios xcode ipad

我有一个旧的iPhone应用程序,现在想将其迁移到iPad应用程序...... 所以我有1个XIB和一些UIWebView和iAd视图......

如何将其转换为uinversal应用程序...我只更改了设备到通用....我的意思是只添加一个新的xib说明DetailController-ipad.xib工作即对于iPad它会自动接受吗?

实际上在我的代码中,我有;

DetailController *detailController = [[DetailController alloc] initWithNibName:@"DetailController" bundle:nil];

那么同样的旧DetailController.xib也不会被推送吗?

我需要做出哪些改变?

请帮忙。

3 个答案:

答案 0 :(得分:2)

在加载nib时,询问系统运行的设备类型,然后加载相应的nib文件。使用这样的东西:

DetailController *detailController;
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
    detailController = [[DetailController alloc] initWithNibName:@"DetailController" bundle:nil];
} else {
    detailController = [[DetailController alloc] initWithNibName:@"DetailController-ipad" bundle:nil];
}

您可能还希望在不同的界面习语中对您的详细视图控制器执行不同的操作,例如将视图控制器放在iPhone上的UINavigationController和iPad上的UISplitViewController上。 / p>

另一个选择是为iPhone和iPad提供单独的DetailController实现。您的界面在两个界面习语中可能非常相似,一个DetailController会更好。或者,对于iPhone和iPad版本的应用,您可能会有明显不同的界面,其中iPhoneDetailControlleriPadDetailController会更有意义。例如,iPhone的较小屏幕可能需要使用UINavigationController,但较大的iPad屏幕可以在一个屏幕上包含整个界面。

编辑回复评论:

Xcode的Interface Builder部分在创建.xib文件时设置界面惯用法,阻止.xib从iPhone格式转换为iPad格式。为iPad .xib创建一个新的界面文件。您可以将iPhone .xib中的元素复制并粘贴到iPad .xib,然后重新连接插座并调整尺寸和位置。

答案 1 :(得分:2)

如果您以编程方式加载GUI,请使用这些来检查设备是iPhone还是iPad。

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
  // The device is an iPad running iPhone 3.2 or later.
  // [load appropriate iPad nib file]
}
else {
  // The device is an iPhone or iPod touch.
  // [load appropriate iPhone nib file]
}

答案 2 :(得分:0)

您可以通过编程方式创建ViewController。只需查询设备的宽度和高度即可。然后根据这些值放置您的商品。