2

Using Macaw master branch (for Swift Package Manager reasons).

The goal is to just get SVGView to fit inside the frame. The border I draw around SVGViewRepresentable correctly confirms the desired frame size. But .scaleAspectFit just isn't giving the result of scaling up/down SVGView to fit the frame.

struct SVGViewRepresentable: UIViewRepresentable {
    var svgName: String
    let size: CGSize

    func makeUIView(context: Context) -> SVGView {
        let node = try! SVGParser.parse(resource: svgName)

        let svgView = SVGView(node: node, frame: CGRect(origin: CGPoint.zero, size: size))
        svgView.backgroundColor = UIColor.clear
        svgView.layer.borderWidth = 1.0
        svgView.layer.borderColor = UIColor.blue.cgColor
        svgView.contentMode = .scaleAspectFit

        return svgView
    }

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

    }
}

struct MacawSVGView: View {
    var body: some View {
        GeometryReader { (geometry: GeometryProxy) in
            SVGViewRepresentable(svgName: "Tiger", size: geometry.size)
                .frame(width: geometry.size.width, height: geometry.size.height)
                .border(Color.red)
        }
    }
}
Nadir Muzaffar
  • 4,772
  • 2
  • 32
  • 48

0 Answers0