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

在DesignSystem包中如何获取自定义Assets.xcassets里的资源?

解决独立Swift包中Assets资源无法访问的问题
  • 先把资源包配置好
    打开DesignSystem包的Package.swift文件,得把Assets.xcassets明确加到资源目录配置里,不然包编译时不会把资源带进去。示例代码:

    targets: [
        .target(
            name: "DesignSystem",
            dependencies: [],
            resources: [
                .process("Assets.xcassets") // 填你的Assets相对路径,根目录就直接写这个
            ]
        ),
        .testTarget(
            name: "DesignSystemTests",
            dependencies: ["DesignSystem"]),
    ]
    

    要是你的Assets.xcassets不在包根目录,比如在Sources/DesignSystem下面,路径就写成Sources/DesignSystem/Assets.xcassets。

  • 访问资源时指定包的Bundle
    默认的Color(name)和UIColor(named: name)只会找主App的资源,所以得明确指定DesignSystem包的Bundle:

    // 直接用Swift包自带的Bundle.module就能拿到当前包的Bundle
    let designBundle = Bundle.module
    // 获取颜色
    let color = Color("myColorName", bundle: designBundle)
    let uiColor = UIColor(named: "myColorName", in: designBundle, compatibleWith: nil)
    // 图片也一样这么写
    let uiImage = UIImage(named: "myImageName", in: designBundle, compatibleWith: nil)
    let swiftUIImage = Image("myImageName", bundle: designBundle)
    
  • 检查资源有没有被正确打包

    1. 选中DesignSystem包,Build一下
    2. 去Xcode的Products目录找到生成的框架文件,右键选"Show in Finder"
    3. 右键框架文件,选"Show Package Contents",看看Resources文件夹里有没有Assets.car文件,有的话说明资源打包成功了。
  • Xcode 14.3的小细节
    要是你是在App项目里引入本地包,得确保App的Target已经加了DesignSystem的依赖,而且Build Phases的"Link Binary With Libraries"里能看到这个框架。另外,先清一下项目缓存(Cmd+Shift+K)再重新Build,有时候缓存会搞事情。

内容的提问来源于stack exchange,提问作者Giga Khizanishvili

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 04:10:08