Macaw SVG .scaleAspectFit with SwiftUI

477 Views Asked by At

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)
        }
    }
}
0

There are 0 best solutions below