7

如果这是一个愚蠢的问题,我深表歉意,但我已经做了一些谷歌搜索和搜索,但没有找到任何人问这个确切的问题。

我从事 iOS 开发已经有一段时间了,但我对 Interface Builder 完全陌生。我想知道的是:有没有办法只创建一个 .xib 文件,然后在通用应用程序中将它用于 iPhone 和 iPad?

对我来说必须单独创建它们似乎很愚蠢。当我可以在代码中做一次(对屏幕大小进行细微调整)时,为什么要在 Interface Builder 中多次放置一些东西?

如果我在这里遗漏/误解了某些东西,请告诉我。就像我说的,我是一个完整的 Interface Builder 新手 :)

编辑:我过去曾向 App Store 提交过非界面构建游戏,其中 iPhone 和 iPad 版本是相同的,所以我不关心在每台设备上使游戏外观/感觉不同。我打算让它们看起来完全一样,除了由于纵横比的不同而导致的一些轻微的定位变化。

4

4 回答 4

10

如果您知道结果视图会是什么样子,基于自动调整大小,您确实可以只使用一个.xib. 如果视图只是某种共享组件,可以根据需要自动调整大小,则可能会派上用场。但是,如果您需要让 iPad 上的视图看起来与 iPhone 上的完全不同,只需使用两个.xibs。然后可以根据需要加载适当的,例如在实例初始化程序中,比如这个控制器的 -init:

- (id)init
{
    if ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad)
    {
         self = [super initWithNibName:@"YourNibForPad" bundle:nil];
    }
    else
    {
         self = [super initWithNibName:@"YourNibForPhone" bundle:nil];
    }
    if (self) { /* initialize other ivars */ }
    return self;
}
于 2012-04-05T15:18:35.227 回答
3

XIBs 是单独文件的主要原因是因为 Apple 认为为 iPhone/iPod touch 和 iPad 设计的 UI 应该分别针对每一个进行定制。这在他们的iOS App Programming Guide中得到了回应,其中说:

对于视图,主要修改是重新设计视图布局以支持更大的屏幕。简单地缩放现有视图可能有效,但通常不会产生最佳结果。您的新界面应该利用可用空间并在适当的情况下利用新的界面元素。这样做更有可能使用户感觉更自然的界面——而不仅仅是更大屏幕上的 iPhone 应用程序。

虽然为实际上是一个 UI 维护两个 XIB 可能需要一些时间,但我觉得这比使用一个 XIB 然后必须连接大部分 UI 元素以便在该 XIB 加载时以编程方式移动它们更简单。毕竟,至少有了两个 XIB,您就可以看到每个 UI 的样子,然后轻松地进行视觉更改。

顺便说一句,不要忘记 iOS 5 的故事板(在此处阅读它们),它使管理视图/视图控制器层次结构变得更加简单。

于 2012-04-05T14:43:50.987 回答
1

尝试命名它们

MyCell.xibMyCell ~ ipad.xib

然后:

[self.tableView registerNib: @"MyCell" forCellReuseIdentifier: @"MyUniqueIdentifier"];
于 2014-04-22T09:51:22.950 回答
0

如果您使用 IB,则需要为 iPhone 和 iPad 创建 2 个单独的 xib 文件。您需要一个单独的 iPad xib 以使您的应用程序符合 Apple iPad UI 指南。

于 2012-04-05T14:44:37.937 回答