Как добавить масштабируемый SVG в SwiftUI?

У меня есть карта, которую я хочу добавить в свое приложение, и в настоящее время я изучаю SwiftUI. Я хочу вставить SVG, где я могу прокручивать, масштабировать, устанавливать начальные координаты x и y / начальное масштабирование, максимальное масштабирование и нажимать на элемент, чтобы открыть страницу. Я знаю, что могу сделать это с помощью UIKit, но как мне это сделать с помощью SwiftUI? Если я не могу сделать это с SVG, как я могу сделать это с интерактивным растровым изображением?

изменить: вот мой код:

struct ContentView: View {

    @State private var currentPosition: CGSize = .zero

    @State private var newPosition: CGSize = .zero

    @State private var scale: CGFloat = 1.0

    @State private var currentAmount: CGFloat = 0

    @State private var finalAmount: CGFloat = 1

    

    var body: some View {

        Image("SVG")

            .frame(width: 1100, height: 1100)

            .offset(x: self.currentPosition.width, y: self.currentPosition.height)

            .gesture(DragGesture()

                .onChanged { value in

                    self.currentPosition = CGSize(width: value.translation.width + self.newPosition.width, height: value.translation.height + self.newPosition.height)

            }

                .onEnded { value in

                    self.currentPosition = CGSize(width: value.translation.width + self.newPosition.width, height: value.translation.height + self.newPosition.height)

                    print(self.newPosition.width)

                    print(self.newPosition.height)

                    self.newPosition = self.currentPosition

                }

            )

            .scaleEffect(finalAmount + currentAmount)

                        .gesture(

                            MagnificationGesture()

                                .onChanged { amount in

                                    self.currentAmount = amount - 1

                                }

                                .onEnded { amount in

                                    self.finalAmount += self.currentAmount

                                    self.currentAmount = 0

                                }

                        )

    }

}

struct ContentView_Previews: PreviewProvider {

    static var previews: some View {

        ContentView()

    }

}

0 ответов

Другие вопросы по тегам