在界面生成器中为通用应用程序创建单个 .xib?(苹果)



如果这是一个愚蠢的问题,我很抱歉,但我做了一些谷歌搜索并搜索了SO,没有发现有人问这个确切的问题。

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

对我来说,必须单独创建它们似乎很愚蠢;为什么我可以在代码中做一次(对屏幕尺寸稍作调整(时,在界面生成器中多次布置某些东西?

如果我在这里遗漏/误解了某些内容,请告诉我。 就像我说的,我是一个完整的界面构建器新手:)

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

如果您知道生成的视图的外观,则基于自动调整大小,您确实只能使用一个.xib。如果视图只是某种根据需要自动调整大小的共享组件,则可能会派上用场。但是,如果您需要在iPad上看起来与iPhone上的视图不同,只需使用两个.xib即可。然后可以根据需要加载适当的,例如在实例初始值设定项中,例如此控制器的 -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;
}

XIB是独立文件的主要原因是因为Apple认为为iPhone/iPod touch和iPad设计的UI应该分别针对每个文件量身定制。这在他们的iOS应用程序编程指南中得到了回应,该指南说:

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

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

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

尝试命名它们

MyCell.xibMyCell ~ ipad.xib

然后:

[self.tableView registerNib: @"MyCell" forCellReuseIdentifier: @"MyUniqueIdentifier"];
如果您

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

最新更新