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文件在其他应用或在线验证工具中可正常显示。
疑问
- 该错误是否与设备特定的DPI设置有关(如
pixelsPerInchForCurrentDevice方法名暗示的那样)? - 使用SVGKit处理现代SVG是否需要特殊配置?
- SVGKit对某些类型的SVG文件是否存在已知限制?
内容的提问来源于stack exchange,提问作者HeWhoRemains
相关产品推荐
相关产品推荐

