我有一个包含10个以上捆绑包的主项目。我有两个名为map_bubble_right_normal
的图像,一个在主束中,另一个在子束中(SCommon.bundle)。我编写如下代码:
UIImage *image = [UIImage imageNamed:@"map_bubble_right_normal"];
代码是在didFinishLaunchingWithOptions
的{{1}}中写的。
我想加载我在主包中保存的图像。但是,从子包(SCommon.bundle)加载图像的代码的结果。
我猜在主捆绑中保存的图像可能是错误图像(可能是复制问题)。因此,我显示ipa内容以查看" map_bubble_right_normal"文件保存在根目录下。图像是对的!!!!!
我不知道为什么AppDelegate
会从子包(SCommon.bundle)加载图像。我试图删除应用程序并重新启动iPhone,结果是一样的。并且,我尝试删除XCode的派生数据,并清理项目。图像仍然从子包中加载(SCommon.bundle)。
另外,我在iOS 8和iOS 9设备上测试了这个问题。
到目前为止,只有一个更改bundleId(主程序包)的方法才能解决问题。
我知道UIImage的缓存功能,但我不明白为什么奇怪的场景会发生。
我诚挚地请求你一位伟大的上帝寻求帮助。谢谢〜
答案 0 :(得分:1)
感谢大家的回答。对不起,我误导了所有人捆绑。
我找到了问题的原因。错误图像不是来自Assets.car的子包。实际上,问题的原因应该归咎于物理目录中的Image.assert。 CocoaPods会将所有匹配“* .assets”复制到Assets.car。
我在Apple Developer forum提出了同样的问题,并找到了问题的关键提示。
Cocoapods与问题相关的问题Pods copy resource script overrides default xcasset bahaviour。
如果您的Pod Repo添加了任何名称与*.xcassets
匹配的文件夹,则Pod_resources.sh脚本会复制Pod_Root中的每个*.xcassets
。
Pod_resources.sh的密钥代码:
if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ]
...
# Find all other xcassets (this unfortunately includes those of path pods and other targets).
OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d)
while read line; do
if [[ $line != "`realpath $PODS_ROOT`*" ]]; then
XCASSET_FILES+=("$line")
fi
...
fi
如果您的Pod已添加任何XCASSET_FILES
文件,则条件xcassets
将会实现。
答案 1 :(得分:0)
要从主捆绑中加载图片,请尝试以下操作:
UIImage *image = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"map_bubble_right_normal" ofType:@"png"]];
答案 2 :(得分:0)
如果您想从mainBundle加载,请尝试以下代码:
NSBundle* myBundle = [NSBundle mainBundle];
NSString* myImage = [myBundle pathForResource:@"Seagull" ofType:@"jpg"];
如果要从子包加载:
NSString *bundlePath = [[NSBundle mainBundle] pathForResource:@"YourBundleName" ofType:@"bundle"];
NSBundle *subBundle = [NSBundle bundleWithPath:bundlePath];
NSString* myImage = [subBundle pathForResource:@"Seagull" ofType:@"jpg"];
参考here
答案 3 :(得分:0)
我遇到了同样的情况。我没有使用上面提到的两个捆绑,而是使用正确的名称显示正确的图像。最后,我发现关键点是图片的后缀为jpg
而不是png
。我改为png
的图像,一切都转好了。也许这是你遇到的可能情况。试一试,祝你好运。 :)
PS:这是a related link作为参考。