Я реализую некоторые функции MapBox в SwiftUi, и при использовании панели навигации по умолчанию все работает как положено:
var body: some View {
NavigationView {
MapView(annotations: $annotations)
.centerCoordinate(.init(latitude: 37.791293, longitude: -122.396324))
.navigationBarTitle("Hello")
}
}
показывает:
Но при попытке создать стиль .inline для navBar представление ведет себя странно:
var body: some View {
NavigationView {
MapView(annotations: $annotations)
.centerCoordinate(.init(latitude: 37.791293, longitude: -122.396324))
.navigationBarTitle("Hello", displayMode: .inline)
//.navigationBarColor(.parqGreen)
}
}
И при добавлении цвет:
Есть идеи, почему это происходит? Это что-то в инфраструктуре MapBox?
Обновление: добавлен MapView:
struct MapView: UIViewRepresentable {
@Binding var annotations: [MGLPointAnnotation]
private let mapView: MGLMapView = MGLMapView(frame: .zero, styleURL: MGLStyle.streetsStyleURL)
func makeUIView(context: UIViewRepresentableContext<MapView>) -> MGLMapView {
mapView.logoView.isHidden = true
mapView.attributionButton.isHidden = true
mapView.zoomLevel = 13
if let styleURL = URL(string: "mapbox://styles/morreke/cjkz2y4bq0kb12smmigszo70w") {
mapView.styleURL = styleURL
}
return mapView
}
func updateUIView(_ uiView: MGLMapView, context: UIViewRepresentableContext<MapView>) {
updateAnnotations()
}
private func updateAnnotations() {
if let currentAnnotations = mapView.annotations {
mapView.removeAnnotations(currentAnnotations)
}
mapView.addAnnotations(annotations)
}
func centerCoordinate(_ centerCoordinate: CLLocationCoordinate2D) -> MapView {
mapView.centerCoordinate = centerCoordinate
return self
}
}
Обновление 2: Даже самая простая реализация имеет тот же результат
struct MapView: UIViewRepresentable {
private let mapView: MGLMapView = MGLMapView()
func makeUIView(context: UIViewRepresentableContext<MapView>) -> MGLMapView {
return mapView
}
func updateUIView(_ uiView: MGLMapView, context: UIViewRepresentableContext<MapView>) {
}
}