位于IB中可见的单独包中的资源,但不在运行时中

Ale*_*kov 5 xcode interface-builder uikit ios

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

我可以在viewDidLoad中手动加载这些图像没问题,但我正在寻找一种方法来使用Interface Builder来更容易地更改这些NIB的设计/皮肤.

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

Sceenshot

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

现在的问题是 - 如何充分利用这两个世界并在IB(设计时)和运行时都正确显示图像.

Fra*_*itt 3

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

(感谢这个答案的提示)。

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

那时,您应该能够在 IB 和代码中使用图像,而无需执行任何特殊操作(除了确保 .xib 和图像位于同一个包中)。