Swift Package Manager中UIKit无法加载XCAssets图片问题求助
SPM中XCAssets图片无法加载的排查方案
核对路径与命名
- 确认
Resources/CoreUI.xcassets的实际位置和Package.swift中声明的路径一致,路径是相对于Package.swift所在目录的。比如如果你的Package.swift在项目根目录,而CoreUI.xcassets放在根目录下的Resources文件夹里,那路径是对的;如果是嵌套在子目录里,要调整路径写法。 - 检查XCAssets内的图片名称和代码里的
"dropdown_down"完全匹配,注意大小写(iOS系统对文件名大小写敏感),同时留意你描述里提到的图片是myImage,代码里用的是dropdown_down,确认是否是同一资源的拼写错误。
- 确认
确认资源配置正确性
- SPM处理xcassets时用
.process是正确的,但要确保Package.swift里的target名称MyCoreUI和你实际引用的模块名一致,没有拼写错误。 - 打开
CoreUI.xcassets,检查图片的Render As设置:如果是模板图片,加载后需要调用.withRenderingMode(.alwaysTemplate)才能正常显示;如果是普通图片,确保设置为Original Image。 - 确认xcassets里至少存在一个分辨率版本的图片(1x/2x/3x任选其一即可),缺失资源也会导致加载失败。
- SPM处理xcassets时用
验证Bundle有效性
- 在代码里添加打印语句,检查
Bundle.module的实际路径:
如果路径不存在或者指向错误位置,说明资源没有被正确打包到模块bundle中,需要重新检查资源配置。print("Bundle path: \(Bundle.module.bundlePath)")
- 在代码里添加打印语句,检查
清理缓存重新构建
- 执行Xcode的
Clean Build Folder(快捷键Cmd+Shift+K) - 删除DerivedData文件夹(可以通过Xcode的
Preferences -> Locations找到路径) - 如果是在其他项目中引用这个SPM包,执行
File -> Packages -> Update to Latest Package Versions确保包是最新构建的。
- 执行Xcode的
代码调用细节
- 如果在模块外调用(比如主App中),必须先导入
MyCoreUI模块,并且确保Bundle.module是该模块的bundle:
不要误用到主App的import MyCoreUI let image = UIImage(named: "dropdown_down", in: Bundle.module, compatibleWith: nil)Bundle.main。
- 如果在模块外调用(比如主App中),必须先导入
内容的提问来源于stack exchange,提问作者Firda Sahidi
相关产品推荐
相关产品推荐

