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

25

我有一个捆绑包,其中我放了一些图片。

内容如下:

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

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

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

有什么问题吗?

谢谢!

3个回答

39

请确保在目标项目的"Build Phases"设置中将bundle文件复制过去。

另外,尝试编程设置它们,看看是否显示:

myImageView.image = [UIImage imageNamed:@"MyBundle.bundle/images/picture1.png"];
我刚在我的项目中尝试了一下,发现你需要做的是在图片名称前面加上bundle名称,像这样:
Image in IB 在IB中,图片会看起来破裂:
Broken 但是当你构建运行你的项目时,图片将正确显示
因此,在您的情况下,请在实际的Interface Builder Image框中使用MyBundle.bundle/images/picture1.png
此外,如果不在名称前面添加bundle名称,则在加载带有bundle图片的视图时会出现以下警告:
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"

@Glenn同意,苹果似乎没有投入太多精力来开发Xcode。 - chown
@CarusdRay 询问Xcode开发人员修复他们的烂摊子?但说真的,我会编写一个快速的Python脚本来自动将图像名称插入项目XML/plist中。 - chown
如果图像位于另一个捆绑包内的资源目录中,有什么办法可以访问它吗? - jowie
3
很不幸,即使我在IB中添加了FrameworkName.bundle/imageName.png,它对我也没有用。我还尝试使用标识符(com.name等),但那也不起作用... - jowie
3
当图像位于另一个 bundle 的 xcassets 中时,这种方法无法正常工作。有没有指定的方法? - Graham Perks
显示剩余6条评论

9

你也需要将XIB文件放入bundle中。这样做的话,界面资源将相对于bundle路径,所以无论是在IB中还是在应用程序中加载接口时都会正常工作。


不错!我从没想过那个。 - chown

0

你可能有一个偏离的构建设置,因为你将捆绑包创建为Mac OS X目标。

查看我的其他答案以获取解决方案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接