我在 XCode4 中创建了一个基于视图的应用程序,并尝试按照Apple的预期方式进行代码和UI设计。
所以我在 AppNameViewController.xib 中设计了UI,它运行正常;现在我想将其作为在iPad上运行的 UNIVERSAL 应用程序启用。我将 App-Target>>摘要>>设备从 iPhone 更改为通用,奇迹般的XCode自动创建了 MainWindow- iPad.xib (Apple,非常好......),但是因为我在 AppNameViewController.xib 而不是 MainWindow.xib 当我在 iPad模拟器上运行应用程序时,我得到了这个丑陋的屏幕,我的UI对象大小和位置被扭曲了(它们的大小仍然设置为iPhone,所以它们都在左上角崩溃了屏幕)。
在我以前的应用程序中,我使用下面显示的代码来区分 AppNameViewControllerForIPHONE.xib 和 AppNameViewControllerForIPAD.xib ;它是从 AppDelegate.m 文件完成的,但在新的XCode 基于视图的应用程序模板中,AppDelegate不会通过 initWithNibName 方法所有
我在XCode 3上使用的代码,不能在XCode 4上使用:
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
viewController = [[AppViewController alloc] initWithNibName:@"AppViewControllerIPAD" bundle:[NSBundle mainBundle]];
}
else {
viewController = [[AppViewController alloc] initWithNibName:@"AppViewControllerIPHONE" bundle:[NSBundle mainBundle]];
}
很长的问题......还是有人知道应该怎么做吗?我应该在哪里设计iPad UI,还是有办法轻松将iPhone xib转换为iPad?
答案 0 :(得分:0)
您必须遵循为Universal Applications指定的新命名方案(Apple-speak中的惯用语),以获取info.plist中的NSMainNibFile
键。例如,如果将NSMainNibFile设置为“MainWindow-iPhone”,则ipad的xib将为“MainWindow-iPad”。
相同的命名约定应该适用于基于视图的应用程序中的视图(我现在无法测试,安装新的xcode)。