iOS:如何在Interface Builder中使用自定义包中的图像?

时间:2011-10-11 23:05:54

标签: iphone ios image interface-builder bundle

我有一个捆绑,我把图像放在里面。

内容如下:

MyBundle.bundle/images/picture1.png
MyBundle.bundle/images/picture2.png

我将MyBundle.bundle拖入我的项目中。

现在我可以在Interface Builder中看到这些图像,甚至可以使用它们。但是,当我运行应用程序时,我看不到图像。

怎么了?

谢谢,

3 个答案:

答案 0 :(得分:39)

确保在目标项目设置的“构建阶段”中复制捆绑包。

另外,尝试以编程方式设置它们并查看它们是否显示:

myImageView.image = [UIImage imageNamed:@"MyBundle.bundle/images/picture1.png"];

我刚刚在我的项目中尝试了这一点,发现您需要做的是使用前面的包名称指定图像,如下所示:

Image in IB

在IB中,图像看起来坏了:

Broken

但是当您构建运行您的项目时,图片将正确显示

因此,在您的情况下,请在实际的Interface Builder图像框中使用MyBundle.bundle/images/picture1.png

此外,如果您未将捆绑名称放在前面,则在使用捆绑图像加载视图时会收到此警告:

2011-10-12 08:22:16.360 UTDebug[721:11c03] Could not load the "map.png" image referenced from a nib in the bundle with identifier "com.companyname.myproject"

答案 1 :(得分:8)

您也需要将XIB放入捆绑包中。当您这样做时,界面的资源将相对于捆绑包,因此它们将在IB中以及在您的应用程序中加载界面时工作。

答案 2 :(得分:0)

您可能将捆绑包创建为Mac OS X目标,从而产生杂散构建设置。

请参阅我的other answer了解解决方案。