如何解决从另一个捆绑包加载资源
| 如果我有一个包含一个类和该类使用的一些资源的捆绑软件。如果我从捆绑软件中加载类,应该如何加载该类中的资源(加载该类的资源在捆绑软件中)? 假设我想在从捆绑包加载的类实例化的对象内部加载图片。 如果我做NSImage *image = [NSImage imageNamed:@\"myImage\"];
它会加载我从中加载类的包中的图像吗?还是在加载了类和资源的捆绑软件的捆绑软件中查找?
解决方法
此方法搜索命名图像
在几个地方,返回第一个
找到与给定图像匹配的图像
名称。搜索顺序为
如下:
搜索名称为
使用setName显式设置:
方法,目前位于
图像缓存。
搜索应用程序的
名称为文件的主捆绑包
匹配指定的字符串。 (对于
有关捆绑包的信息
搜索,请参阅““访问捆绑包”
捆绑编程中的“目录”
指南。)
搜索应用套件
与共享图像的框架
指定的名称。查找文件时
在应用程序包中,它是
更好(但不是必需)以包括
名称中的文件扩展名
参数。 (链接)
, 在OS X 10.7+上,执行以下操作:
NSBundle *otherBundle = [NSBundle bundleWithIdentifier: @\"com.company.otherapp\"];
NSImage *imageFromOtherBundle = [otherBundle imageForResource: @\"imageName\"];
, 您可以使用NSBundle
的+bundleForClass:
类方法来获取对特定类的包的引用。
然后可以使用NSBundle
的‑pathForImageResource:
方法获取图像的路径,并使用该路径创建NSImage
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。