1

我有一个我构建的应用程序,该应用程序将构建为仅限 iPhone 的应用程序。

现在,我被告知现在必须使该应用程序具有通用性。我也必须让它与 iPad 兼容(仅在纵向模式下)。我现在一直在寻找我的选择,因为这个项目中的 XIB 负载了大量的对象,所以以编程方式分配坐标将是一件痛苦的事情。

我正在寻找最好的、最快的方法,以使这个 iPhone 应用程序也成为与 iPad 兼容的应用程序。

PS:没有 mainwindow.xib 文件,因为应用程序是使用 XCode 4.3 构建的,它不会创建 MainWindow.xib 文件。

先感谢您。

编辑:我为所有 XIB 制作了 iPad 的重复 XIB。现在,我正在尝试使用命名约定,它告诉我将文件名后缀更改为 MyiPadXIB~ipad.xib,当应用程序在 iPad 上运行时,它将自动采用该 XIB。这似乎没有发生。

当我在 iPad 中打开应用程序时,只出现一个小窗口(仅 iPhone 应用程序在 iPad 上运行时出现的窗口)。

有什么解决办法吗?

4

2 回答 2

1

我采用了一种非常简单的方法,我只需通过构建设置 > 目标(iPhone)> 右键单击​​并选择重复来创建所有 XIB 的重复 XIB。

然后我会以这种格式更改重复 xib 的名称:“iPhone XIB 名称”~ipad.xib。

然后系统会根据使用的设备自动选择 XIB。

于 2012-10-26T06:04:17.397 回答
0

据我所知(可能有我不知道的更快/更好的方法)

您将为 ipad 创建单独的 xib 文件

当你初始化你的视图控制器时,你会检查你在什么设备上,就像这样

if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
        self.serverSettingsViewController = [[ServerSettingsViewController alloc] initWithNibName:@"ServerSettingsViewController_iPhone" bundle:nil];
        self.motionJpegViewController = [[MotionJpegViewController alloc] initWithNibName:@"MotionJpegViewController_iPhone" bundle:nil];
    } else {
        self.serverSettingsViewController = [[ServerSettingsViewController alloc] initWithNibName:@"ServerSettingsViewController_iPad" bundle:nil];
        self.motionJpegViewController = [[MotionJpegViewController alloc] initWithNibName:@"MotionJpegViewController_iPad" bundle:nil];
    }

并加载您的 iphone 或 ipad xib 文件(仅供参考,请确保 xib 视图对于 ipad 来说足够大)

于 2012-08-07T18:08:10.300 回答