【问题标题】:Can I make one XIB/NIB that can be shared across iPhone and iPad UIs in a Universal App?我可以在通用应用程序中制作一个可以在 iPhone 和 iPad UI 之间共享的 XIB/NIB 吗?
【发布时间】:2013-05-13 15:38:29
【问题描述】:

XIB 是否可以跨平台使用?

EG:我正在创建一个通用应用程序。在创建新的 XIB 时,Xcode 要求我选择一个设备系列。

这部分 UI 将按原样在两个版本的应用中使用,并且设备系列并不真正相关(它是 200x250 像素,可以在两个屏幕上显示)。

如果我为设备系列选择 iPad,这是否意味着在 iPhone 上运行时 xib 对应用程序不可见?

如果没有,我应该注意什么问题?

编辑: 特别是在这个答案中,他们暗示设备系列嵌入在 NIB 本身中,可能使其在“错误”平台上不可见:https://stackoverflow.com/a/10459556/1461211

【问题讨论】:

    标签: ios objective-c ipad xib nib


    【解决方案1】:

    是的。但是,当为手机和 iPad 放置单个 XIB 时,布局可能会比较复杂。

    如果您使用的是 iOS6+,请使用自动布局来创建适用于 iPhone 和 iPad 的完全动态布局。

    对于看起来不正确的布局,您可以创建一个 ~iPad 版本的 XIB。所以 iphone XIB 被称为 'DeskNoteDetails.xib' iPad 版本将被命名为 DeskNoteDetails~IPAD.xib' 现在你可以为设备设置完全不同的布局。当应用程序需要加载 DeskNoteDetailViewController 视图时,框架将确定它应该加载常规 XIB 还是 ~IPAD。

    因此,如果您只有 1 个 XIB,应用程序将始终为两个设备加载该 1 个 XIB。如果您有 ~IPAD xib,应用程序将为设备加载正确的 XIB。

    【讨论】:

    • 你好@johan,它在我的应用程序中不起作用。我已经为 iphone 开发了整个应用程序,我也想为 ipad 制作它,我已经用 NAme~IPAD.xib 创建了 xib,但它对我不起作用,你有任何建议。
    • 什么不起作用?你是如何初始化新的 ViewController 的?
    • @johan,首先感谢回复我,我的 ipad xib 正在加载,但 xcode 6.1 中 ipad 的 xib 上隐藏了子控件
    【解决方案2】:

    我有一个可能的答案,来自资源编程指南(我发誓我在发布问题之前查看了文档!)

    "在 iPhone 或 iPod touch 设备上,系统会加载 MyImage~iphone.png 资源文件,而在 iPad 上,它会加载 MyImage~ipad.png 资源文件。如果某个设备特定版本的资源不是找到后,系统回退到寻找具有原始文件名的资源,在前面的示例中,该文件名是名为 MyImage.png 的图像。"

    因此,它显示,如果文件名中没有具有设备特定扩展名的文件,它将在两个平台上加载相同的版本。

    【讨论】:

      猜你喜欢
      • 2011-03-30
      • 1970-01-01
      • 2021-11-23
      • 2011-10-19
      • 2013-02-11
      • 2011-09-16
      • 2014-11-04
      • 1970-01-01
      • 2011-12-19
      相关资源
      最近更新 更多