Как отобразить MKCompassButton с помощью swiftui - PullRequest
1 голос
/ 11 февраля 2020

Я использую swiftui и мне хотелось бы отобразить кнопку компаса. Часть моего кода на карте получена из этого урока: https://www.morningswiftui.com/blog/build-mapview-app-with-swiftui

Я посмотрел пример кода, чтобы отобразить компас на карте, но мне не удалось найти пример того, как я могу работать с моим кодом swiftui.

1 Ответ

5 голосов
/ 11 февраля 2020

На самом деле показывает компас, но только когда вы пытаетесь перевернуть карту. Если вы хотите постоянно видеть кнопку компаса, вы можете добавить свою собственную кнопку в makeUIView fun c:

struct RootMapView: View {
    var body: some View {
        MapView()
    }
}

struct MapView: UIViewRepresentable {
    func makeUIView(context: Context) -> MKMapView {
        let map = MKMapView()
        map.showsCompass = false // hides current compass, which shows only on map turning

        let compassBtn = MKCompassButton(mapView: map)
        compassBtn.frame.origin = CGPoint(x: 20, y: 20) // you may use GeometryReader to replace it's position
        compassBtn.compassVisibility = .visible // compass will always be on map
        map.addSubview(compassBtn)

        return map
    }

    func updateUIView(_ uiView: MKMapView, context: Context) {
    }
}

enter image description here

...