我有一个旧的iPhone应用程序,现在想把它迁移到iPad应用程序…所以我有一个XIB与一些UIWebView和iAd视图…
如何将其转换为通用应用程序…我只将设备更改为通用....我会添加一个新的xib,比如DetailController-ipad。xib工作,也就是说,对于iPad,它会自动接收它?
实际上,在我的代码中,我有;
DetailController *detailController = [[DetailController alloc] initWithNibName:@"DetailController" bundle:nil];
同样的旧DetailController也是如此。
我需要做哪些修改?
请帮。
在加载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
中。
另一个选择是在iPhone和iPad上分别实现DetailController
。在这两种接口习惯用法中,您的接口可能非常相似,使用一个DetailController会更好。或者您的应用程序的iPhone和iPad版本可能有明显不同的界面,其中iPhoneDetailController
和iPadDetailController
更有意义。例如,较小的iPhone屏幕可能需要使用UINavigationController,但较大的iPad屏幕可以在一个屏幕上包含整个界面。
编辑回复评论:
Xcode的Interface Builder部分在创建。xib文件时设置接口习惯用法,阻止。xib文件从iPhone格式转换为iPad格式。为iPad创建一个新的接口文件。xib。您可以将iPhone .xib中的元素复制并粘贴到iPad .xib中,然后重新连接插座并调整大小和位置。
如果您以编程方式加载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]
}
你可以通过编程方式创建ViewController。只需查询设备的宽度和高度。然后根据这些值放置物品。