我有一个应用程序,其中大多数图像资源都存储在单独的资源包中(这是有正当理由的)。此资源包与主应用程序包一起添加到项目中,当我在Interface Builder中设计我的NIB时,所有这些图像在IB内部都可见(即它们出现在我的UIImageView的下拉列表中,并且它们在我的UI中正确显示)。但是当我在模拟器中运行我的应用程序时,所有这些图像都丢失了。除了主应用程序包之外,有没有办法告诉UIKit在这个额外的资源包中查找这些图像?
我可以在viewDidLoad中手动加载这些图像没问题,但我正在寻找一种方法来使用Interface Builder来更容易地更改这些NIB的设计/外观。
更新:虽然来自该捆绑包的图像文件在IB的下拉列表中可用,但它们不会在运行时加载。但是,如果我在IB中为其名称添加一个包名称,如下所示:
然后它们将在运行时正确加载,但IB会将它们显示为大的蓝色问号。
现在的问题是 - 如何充分利用这两个世界,并在IB(设计时)和运行时都正确显示图像。
答案 0 :(得分:3)
我遇到了同样的问题,这可能是由于Xcode在组装捆绑目标时编译图像的方式。由于iOS上不完全支持捆绑目标,因此您必须将它们创建为Mac OS X目标。这会留下一个有问题的构建设置,即COMBINE_HIDPI_ARTWORK
,它将设置为YES
。这会导致您的普通变体和@2x
变体合并到捆绑包中的单个tiff
文件中。结果文件在Mac OS上受支持,但在iOS上不受支持。
(感谢this answer提示)。
要解决此问题,请在文件导航器中选择创建捆绑包的项目,选择捆绑目标,切换到“生成设置”选项卡,然后搜索上述设置。然后选择整行并点击删除或将其设置为NO
。
此时,你应该能够在IB和代码中使用你的图像而不做任何特殊的事情(除了确保.xib和图像在同一个包中)。