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

SwiftUI如何从Assets返回图片而非系统符号Image并在Body中调用

实现步骤

1. 准备Assets资源

先把需要的图片添加到项目的Assets.xcassets中,给每张图片设置唯一且准确的名称(比如infoIcon、successIcon、warningIcon、errorIcon,注意大小写要和后续代码完全一致)。

2. 修改枚举的图片名称属性

把原来返回系统符号字符串的sfSymbol属性,改成返回Assets中图片的名称:

// 假设你的枚举类型如下(可根据实际代码调整)
enum AlertType {
    case info, success, warning, error
    
    var assetImageName: String {
        switch self {
        case .info:
            return "infoIcon" // 对应Assets里的图片名
        case .success:
            return "successIcon"
        case .warning:
            return "warningIcon"
        case .error:
            return "errorIcon"
        }
    }
}

3. 在视图中调用Assets图片

去掉systemName参数,直接使用Image的普通初始化方法,传入刚才定义的assetImageName:

Image(data.type.assetImageName)
// 可选:添加修饰符调整图片样式
.resizable()
.frame(width: 24, height: 24)
.foregroundColor(.primary)

注意事项

  • 确保Assets中的图片名称和代码返回的字符串完全匹配(包括大小写),否则图片会加载失败。
  • 若要适配不同屏幕分辨率,记得在Assets中添加对应@2x、@3x尺寸的图片资源。
  • 如果是矢量图,可在Assets的属性面板勾选"Preserve Vector Data",保证缩放时不失真。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 06:36:35