您可以使用设备修改器(例如,~ipad)在信息中提供特定于设备的密钥.plist,并指定特定于设备的启动映像(例如,iPhone为Default.png,ipad为Default~ipad.png).这两件事在Apple Docs中有特别提到,但他们没有说这对任何其他类型的文件都有效.

我发现(完全是偶然的)这种方法适用于装载.xib文件通过initWithNibName:bundle:.例如,我可以拥有MyView.xib和MyView~ipad.xib和该代码:

MyViewController *viewController = [[MyViewController alloc] 
                                     initWithNibName:@"MyView" bundle:nil];

... 将完全加载MyView~ipad.iPad上的xib和MyView.在其他设备上使用xib.

那么,1)这有记录在案吗?我肯定找不到任何苹果文档.这肯定比判断UI_USER_INTERFACE_IDIOM()和在任何地方硬编码两个不同的nib名称更方便,但如果没有文档记录,我就不相信它.

还有,2)有人知道这是从哪个版本的iOS开始工作的吗?我只在4.2中try 过,而且在那里很有效.一般来说,设备修改器(即使是上面列出的文件)的最小值为4.0.

推荐答案

实际上,它在文件中有明确的定义,但只是一个脚注.

CocoaNibs

在"使用NSBundle加载NIB文件"底部的注释中:

注意:如果您正在开发

哪个链接到Cocoa Conceptual LoadingResources

然而,是的,这是一个4.0+的功能.

Objective-c相关问答推荐

Objective-C - 将浮点数转换为字符串的其他方法

NSDateFormatter,我做错了什么还是这是一个错误?

iPhone 可达性判断

ios10:viewDidLoad 框架宽度/高度未正确初始化

为什么在目标 c 的静态上下文中允许 self

定义缓存变量时在objective-c中使用static关键字

判断正在使用的应用程序版本

我可以以编程方式滚动到 UIPickerView 中所需的行吗?

Objective-C 方法中的静态变量是否跨实例共享?

如何在 iOS 中拨打电话?

Objective C const NSString * vs NSString * const

将子视图添加到 UIButton

了解 performSegueWithIdentifier

UICollectionView 单元格 Select 和单元格重用

UITableViewCell 右侧有图像?

在objective c中以自定义格式获取当前时间

判断核心数据中是否存在对象的最快方法?

如何调整 UITableView 中原型单元格的左边距?

在 Xcode 中制作 RGB colored颜色

公开只读但具有私有设置器的 Objective-C 属性