使用Apple的新注释引脚徽标更改注释引脚的颜色

时间:2018-03-08 01:23:18

标签: swift annotations uicolor mkannotation

我正在尝试更改注释引脚的颜色。但是,我希望它能够改变新的Apple注释徽标的颜色。相反,当颜色发生变化时,新徽标(如下所示)会转换为旧徽标(如下所示)。

无论如何都要更改颜色以及保留新的注释引脚吗?

这是我的代码:

class MyPointAnnotation : MKPointAnnotation {
    var pinTintColor: UIColor?
}

func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
    var annotationView = mapView.dequeueReusableAnnotationView(withIdentifier: "myAnnotation") as? MKPinAnnotationView

    if annotationView == nil {
        annotationView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: "myAnnotation")
        annotationView?.canShowCallout = true
       } else {
        annotationView?.annotation = annotation
    }
    if annotation is MKUserLocation {
        return nil
    }
    if let annotation = annotation as? MyPointAnnotation {
        annotationView?.pinTintColor = annotation.pinTintColor
    }
            return annotationView
}

self.map.delegate = self
/// in view did load

旧针:

Old pin

新针:

new pin

任何输入都将非常感谢!

1 个答案:

答案 0 :(得分:0)

使用MKMarkerAnnotationView代替MKPinAnnotationView。

if annotationView == nil {
    annotationView = MKMarkerAnnotationView(annotation: annotation, reuseIdentifier: "myAnnotation")
    annotationView?.canShowCallout = true
   } else {
    annotationView?.annotation = annotation
}

MKMarkerAnnotationView使用markerTintColor而不是pinTintColor。 但是,这仅适用于iOS 11。 新图标仅出现在iOS 11中。