创建两个xib,一个用于iPhone,一个用于iPad

Posted

技术标签:

【中文标题】创建两个xib,一个用于iPhone,一个用于iPad【英文标题】:Create two xibs, one for iPhone and one for iPad 【发布时间】:2012-07-09 22:45:47 【问题描述】:

如何创建特定于设备的 xib?我为 iPhone 制作了一个通用的,但如何使用单独的 xib 文件?

【问题讨论】:

为 iPhone 制作一款,为 iPad 制作一款... 【参考方案1】:

来自Apple Resource Programming Guide:

注意:如果您正在为 ios 开发通用应用程序,您可以使用特定于设备的命名约定为底层设备自动加载正确的 nib 文件。有关如何命名 nib 文件的详细信息,请参阅“iOS Supports Device-Specific Resources”。

在“iOS 支持设备特定资源”文档中,它是这样说的:

要将资源文件与特定设备关联,您可以在其文件名中添加自定义修饰符字符串。包含此修饰符字符串会生成具有以下格式的文件名:

basename - device.filename_extension

字符串代表资源文件的原始名称。它还代表您从代码访问文件时使用的名称。同样,字符串是用于标识文件类型的标准文件扩展名。该字符串是区分大小写的字符串,可以是以下值之一:

ipad - 资源只能在 iPad 设备上加载。 iphone - 资源只能加载到 iPhone 或 iPod touch 设备上。 您可以将设备修饰符应用于任何类型的资源文件。

因此,如果您想要单独的 .xib 文件,您将包括名为“MyView-ipad.xib”的 iPad xib 和名为“MyView-iphone.xib”的 iPhone xib。

一旦你将这些文件包含在你的项目中,当你调用它时:

UIViewController *someViewController = [[someViewController alloc] initWithNibName:@"MyView" bundle:nil];

根据您的应用程序在哪个设备上运行,将加载正确的 xib 文件。

希望这会有所帮助!

【讨论】:

【参考方案2】:

这是创建新项目时的默认设置。举个具体的例子,我会为 iPhone 和 iPad 创建一个空白项目并深入研究。

【讨论】:

【参考方案3】:

如果您已经将项目创建为 iPhone 项目,则需要将其更改为通用应用程序

【讨论】:

是的,但这并不能回答问题。

以上是关于创建两个xib,一个用于iPhone,一个用于iPad的主要内容,如果未能解决你的问题,请参考以下文章

iphone+相同的xib用于不同的班级

将 Storyboard 和 xib 用于同一个视图控制器?

sendSubviewToBack 不适用于从 xib 创建的视图

在 xib 文件上设置的约束不适用于 ipad ios

制作通用 iOS 应用程序应遵循的初始步骤

您的二进制文件未针对 iPhone 5 进行优化,将 launchscreen.xib 用于 iOS 8 目标