道歉,如果这是一个愚蠢的问题,但我已经做了一些谷歌搜索和搜索,并没有找到任何人问这个确切的问题。
我一直在做iOS开发已有一段时间了,但我对Interface Builder完全不熟悉。我想知道的是:有没有办法只创建一个.xib文件,然后在Universal应用程序中将它用于iPhone和iPad?
我必须单独创建它们似乎很愚蠢;当我在代码中做一次(对屏幕大小进行微调)时,为什么会在Interface Builder中多次放置一些工作?
如果我在这里遗失/误解,请告诉我。就像我说的,我是一个完整的Interface Builder新手:)
编辑:我过去曾向App Store提交过非界面构建器游戏,其中iPhone和iPad版本完全相同,所以我并不担心每个设备上的游戏外观/感觉都不同。我希望它们看起来完全一样,除了由于宽高比的差异导致的一些轻微的定位变化。答案 0 :(得分:10)
如果您知道结果视图的外观,基于自动调整,您确实只能使用一个.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;
}
答案 1 :(得分:3)
XIB是独立文件的主要原因是因为Apple认为应该分别为iPhone / iPod touch和iPad设计的UI。这与他们的iOS App Programming Guide相呼应,其中包含以下内容:
对于视图,主要修改是重新设计视图布局以支持更大的屏幕。简单地缩放现有视图可能有效,但通常不会产生最佳结果。您的新界面应该利用可用空间并在适当的情况下利用新的界面元素。这样做更有可能导致用户感觉更自然的界面 - 而不仅仅是更大屏幕上的iPhone应用程序。
虽然为一个有效的UI维护两个XIB可能需要一些时间,但我觉得它比使用一个XIB然后必须连接大部分UI元素以便在XIB上以编程方式移动它们更直接负载。毕竟,至少有两个XIB,你可以看到每个用户界面的样子,然后轻松地进行视觉变化。
顺便说一句,不要忘记iOS 5的故事板(read about them here),这使得管理视图/视图控制器层次结构变得更加简单。
答案 2 :(得分:1)
尝试命名
MyCell.xib
和MyCell ~ ipad.xib
然后:
[self.tableView registerNib: @"MyCell" forCellReuseIdentifier: @"MyUniqueIdentifier"];
答案 3 :(得分:0)
如果您使用IB,则需要为iPhone和iPad创建2个单独的xib文件。您需要单独的iPad xib才能使您的应用符合Apple iPad UI指南。