我只能将.png文件上传到资产文件夹中吗? .svg文件出现错误。 我想将其用于Image()组件
答案 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 tool和repository,以备您需要贡献并使其支持所有SVG功能。
答案 2 :(得分:0)
您可以在资产目录中将pdf用于矢量(选择单个比例并在右侧的检查器中保存矢量数据)。您不能在资产目录中直接使用SVG,但实际上使用Xcode 11可以将SVG用于符号。苹果公司提供了有关如何制作自己的SVG符号here的详细指南。