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))
}
}
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
}
}
Problem unter iOS 26:

Mobile version