Swift - 更改注释图像不起作用

时间:2016-08-02 15:50:49

标签: ios swift mkmapview mkannotation

我已经按照其他堆栈帖子和教程将我的注释图像更改为自定义图像,但它似乎不起作用。不会出现错误或运行时错误,只是注释图像不会改变。

顺便说一句,我在annotationView!.image = UIImage(named: "RaceCarMan2png.png")行上设置了一个断点,它表明该行正在调用,但是没有任何反应。我将衷心感谢您的帮助。感谢。

func mapView(mapView: MKMapView, viewForAnnotation annotation: MKAnnotation) -> MKAnnotationView? {
    if annotation is MKUserLocation {
        return nil
    }

    let identifier = "MyCustomAnnotation"

    var annotationView = mapView.dequeueReusableAnnotationViewWithIdentifier(identifier)
    if annotationView == nil {
        annotationView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: identifier)
        annotationView?.canShowCallout = true

        annotationView!.image = UIImage(named: "RaceCarMan2png.png")

    } else {
        annotationView!.annotation = annotation
    }


    configureDetailView(annotationView!)

    return annotationView
}

func configureDetailView(annotationView: MKAnnotationView) {
        annotationView.detailCalloutAccessoryView = UIImageView(image: UIImage(named: "url.jpg"))
}

2 个答案:

答案 0 :(得分:9)

问题是您正在使用MKPinAnnotationView。如果您使用MKAnnotationView,则会看到您的图片。

在过去(例如iOS 8),设置image的{​​{1}}似乎工作正常,但在iOS 9及更高版本中,它使用了一个引脚,无论如何(这不是完全不合理的行为)对于一个名为MKPinAnnotationView的类; lol)。

使用MKPinAnnotationView可以避免此问题。

答案 1 :(得分:1)

在返回之前调用

if let annotationView = annotationView {
    // Configure your annotation view here
    annotationView.image = UIImage(named: "RaceCarMan2png.png")
}

return annotationView

并在if

内检查断点是否正常