Ара SVG .scaleAspectFit с SwiftUI - PullRequest
0 голосов
/ 30 апреля 2020

Использование главной ветви Macaw (по соображениям Swift Package Manager).

Цель состоит в том, чтобы просто поместить SVGView в рамку. Граница, которую я рисую вокруг SVGViewRepresentable, правильно подтверждает желаемый размер кадра. Но .scaleAspectFit просто не дает результата масштабирования вверх / вниз SVGView, чтобы соответствовать кадру.

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