【问题标题】:Resources located in a separate bundle visible in IB, but not in the runtime位于独立包中的资源在 IB 中可见,但在运行时不可见
【发布时间】:2011-08-10 04:26:01
【问题描述】:

我有一个应用程序,其中大部分图像资源都存储在单独的资源包中(这样做是有正当理由的)。此资源包与主应用程序包一起添加到项目中,当我在 Interface Builder 中设计我的 NIB 时,所有这些图像都在 IB 中可见(即它们出现在我的 UIImageView 的下拉列表中,并且它们正确显示在我的 UI 中)。但是,当我在模拟器中运行我的应用程序时,所有这些图像都丢失了。除了主应用程序包之外,有没有办法告诉 UIKit 在这个附加资源包中查找这些图像?

我可以在 viewDidLoad 中手动加载这些图像没问题,但我正在寻找一种使用 Interface Builder 的方法,以便更轻松地更改这些 NIB 的设计/外观。

更新:虽然该捆绑包中的图像文件在 IB 的下拉列表中可用,但它们不会在运行时加载。但是,如果我在 IB 中为它们的名称添加前缀,如下所示:

然后它们将在运行时正确加载,但 IB 会将它们显示为蓝色大问号。

现在的问题是 - 如何两全其美,并在 IB(设计时)和运行时正确显示图像。

【问题讨论】:

  • 当您说捆绑时,您实际上是指.bundle 吗?你是如何将它添加到你的 Xcode 项目中的?可以看一下项目导航器的截图吗?
  • 是的,它是一个实际的 .bundle。您可以像任何其他文件一样将其添加到您的项目中,并且 IB 会自动获取其内容。这是项目导航器的快照Project Navigator
  • 这些家伙说他们让它可以工作stackoverflow.com/questions/7733565/…,我无法让它与我的 ios6 sdk 一起工作

标签: ios xcode uikit interface-builder


【解决方案1】:

我遇到了同样的问题,这可能是由于 Xcode 在组装捆绑目标时编译图像的方式。由于 iOS 不完全支持捆绑目标,因此您必须将它们创建为 Mac OS X 目标。这留下了一个有问题的构建设置,即COMBINE_HIDPI_ARTWORK,它将被设置为YES。这会导致您的普通和@2x 变体在您的捆绑包中组合成一个tiff 文件。 Mac OS 支持生成的文件,但 iOS 不支持。

(感谢this answer 的提示)。

要解决此问题,请在文件导航器中选择您的包创建项目,选择您的包目标,切换到构建设置选项卡,然后搜索上述设置。然后选择整行并点击 Delete 或将其设置为 NO

此时,您应该能够在 IB 和代码中使用您的图像,而无需做任何特殊的事情(除了确保 .xib 和图像在同一个包中)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-22
    • 2017-04-10
    • 2014-04-25
    • 2015-11-19
    • 1970-01-01
    相关资源
    最近更新 更多