Fehler bei der benutzerdefinierten Annotation von iOS 26 MapKitIOS

Programmierung für iOS
Anonymous
 Fehler bei der benutzerdefinierten Annotation von iOS 26 MapKit

Post by Anonymous »

In iOS 26 habe ich ein Problem mit MapKit.
Ich habe eine benutzerdefinierte Anmerkung mit „MKMarkerAnnotationView“ erstellt. Sie funktioniert gut mit aktuellen stabilen iOS-Versionen (15 bis 18), aber bei iOS 26 wird die Standardanmerkung hinter meiner Anmerkung angezeigt. Ich habe den Xcode-UI-Inspektor überprüft und festgestellt, dass es in „MKMarkerAnnotationView“ eine neue Unteransicht namens „MKMarkerBalloonView“ gibt, die angezeigt wird.
Um es klarzustellen: Das Problem tritt auf, wenn die App unter iOS 26 ausgeführt wird. Selbst wenn ich mit iOS 18.x baue, habe ich das Problem immer noch auf Geräten mit iOS 26.
Ich habe auch versucht, mich vom Liquid Glass abzumelden, indem ich UIDesignRequiresCompatibility in der info.plist hinzugefügt habe, aber es hat nichts geändert.
hier ist die „MKMarkerAnnotationView

Code: Select all

static let reuseId = "AnnotationMarkerView"

private lazy var annotationView: UIView = {
let hostController = UIHostingController(rootView: AnnotationView())
let view: UIView = hostController.view
view.translatesAutoresizingMaskIntoConstraints = false
view.backgroundColor = .clear
view.accessibilityElementsHidden = true
return view
}()

init(annotation: MKAnnotation, reuseIdentifier: String?) {
super.init(annotation: annotation, reuseIdentifier: reuseIdentifier)

self.setupUI()

self.displayPriority = .required
self.collisionMode = .circle

self.titleVisibility = .hidden
self.subtitleVisibility = .hidden
self.markerTintColor = .clear
self.glyphTintColor = .clear
self.glyphImage = nil
self.selectedGlyphImage = nil
self.glyphText = nil
}

required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") }

private func setupUI() {
self.backgroundColor = .clear
self.addSubview(self.annotationView)
self.annotationView.centerXAnchor.constraint(equalTo: self.centerXAnchor, constant: 0).isActive = true
self.annotationView.centerYAnchor.constraint(equalTo: self.centerYAnchor, constant: -24).isActive = true

self.bounds = .init(origin: .zero, size: .init(width: 0, height: 0))
}
}
und das MapViewDelegate:

Code: Select all

func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {

guard let annotation = annotation as? Annotation else {
return nil
}

let annotatonView = AnnotationMarkerView(annotation: annotation, reuseIdentifier: AnnotationMarkerView.reuseId)

return annotatonView

}
}
Link zu einem Demoprojekt.
Problem unter iOS 26:
Image

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post