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

SwiftUI中用SVGKit加载SVG失败:Assertion failure错误求助

SwiftUI中使用SVGKit加载SVG图片失败的问题

加载SVG图片时遇到以下错误:

Assertion failure in +[SVGLength pixelsPerInchForCurrentDevice], SVGLength.m:238

尝试的两种加载方式

  • 从应用Bundle加载:
if let filePath = Bundle.main.path(forResource: "rat", ofType: "svg"),
   let svgImage = SVGKImage(contentsOfFile: filePath) {
    Image(uiImage: svgImage.uiImage)
        .resizable()
        .scaledToFit()
} else {
    Text("Failed to load SVG")
        .foregroundColor(.red)
}
  • 使用SVGKImage(named:)方法加载:
if let svgImage = SVGKImage(named: "rat") {
    Image(uiImage: svgImage.uiImage)
        .resizable()
        .scaledToFit()
} else {
    Text("Failed to load SVG")
        .foregroundColor(.red)
}

问题现状

两种方式均加载失败:

  • 第一种方法抛出上述断言错误;
  • 第二种方法输出警告:

[SVGKImage] WARNING: not caching the output for new SVG image with name = rat, because it failed to load correctly.

已执行的排查操作

  • 确认SVG文件存放目录正确,且已添加至应用Bundle;
  • 验证文件名完全匹配(包含大小写);
  • 测试多个SVG文件,包括简化版本;
  • 启用SVGKit日志(调用SVGKEnableLogging()),未获取更多有效信息;
  • 测试的SVG文件在其他应用或在线验证工具中可正常显示。

疑问

  1. 该错误是否与设备特定的DPI设置有关(如pixelsPerInchForCurrentDevice方法名暗示的那样)?
  2. 使用SVGKit处理现代SVG是否需要特殊配置?
  3. SVGKit对某些类型的SVG文件是否存在已知限制?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 19:02:43