You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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任选其一即可),缺失资源也会导致加载失败。
  • 验证Bundle有效性

    • 在代码里添加打印语句,检查Bundle.module的实际路径:
      print("Bundle path: \(Bundle.module.bundlePath)")
      
      如果路径不存在或者指向错误位置,说明资源没有被正确打包到模块bundle中,需要重新检查资源配置。
  • 清理缓存重新构建

    • 执行Xcode的Clean Build Folder(快捷键Cmd+Shift+K)
    • 删除DerivedData文件夹(可以通过Xcode的Preferences -> Locations找到路径)
    • 如果是在其他项目中引用这个SPM包,执行File -> Packages -> Update to Latest Package Versions确保包是最新构建的。
  • 代码调用细节

    • 如果在模块外调用(比如主App中),必须先导入MyCoreUI模块,并且确保Bundle.module是该模块的bundle:
      import MyCoreUI
      let image = UIImage(named: "dropdown_down", in: Bundle.module, compatibleWith: nil)
      
      不要误用到主App的Bundle.main。

内容的提问来源于stack exchange,提问作者Firda Sahidi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 13:05:22