如何在SwiftUI中使用.svg图像

时间:2019-10-01 23:09:05

标签: swift xcode swiftui

我只能将.png文件上传到资产文件夹中吗? .svg文件出现错误。 我想将其用于Image()组件

3 个答案:

答案 0 :(得分:7)

您可以使用Macaw来显示SVG:https://github.com/exyte/Macaw

1)通过SPM将软件包添加到您的项目中(标记0.9.5实际上不起作用,您需要使用master分支)

2)将.svg文件移动到项目中,或者在Assets.xcassets中创建一个新的数据集,然后将svg文件添加到该数据集中。

3)使用此代码:

struct MyView: View {

    var svgName: String

    var body: some View {
        SVGImage(svgName: self.svgName)
            .frame(width: 50, height: 550)
    }
}
struct SVGImage: UIViewRepresentable {

    var svgName: String

    func makeUIView(context: Context) -> SVGView {
        let svgView = SVGView()
        svgView.backgroundColor = UIColor(white: 1.0, alpha: 0.0)   // otherwise the background is black
        svgView.fileName = self.svgName
        svgView.contentMode = .scaleToFill
        return svgView
    }

    func updateUIView(_ uiView: SVGView, context: Context) {

    }

}

答案 1 :(得分:1)

我创建了一个简单的工具,该工具将SVG代码转换为SwiftUI的Shape对象。目前它非常有限(特别是它仅支持直线和三次曲线,单路径SVG以及用一种颜色填充的形状),但是您仍可以在简单情况下使用它。

这里是link to the toolrepository,以备您需要贡献并使其支持所有SVG功能。

答案 2 :(得分:0)

您可以在资产目录中将pdf用于矢量(选择单个比例并在右侧的检查器中保存矢量数据)。您不能在资产目录中直接使用SVG,但实际上使用Xcode 11可以将SVG用于符号。苹果公司提供了有关如何制作自己的SVG符号here的详细指南。