我在我的 iOS 应用程序中绘制了一个 MKMapView
,这张 map 上有一些注释,用自定义图像表示它们。选择特定注释时,图像会略有变化(发光)。
为此,我使用 mapView(mapView: MKMapView!, didSelectAnnotationView view: MKAnnotationView!)
委托(delegate)方法来更改图像(通过更改 view.annotation.image
)。这似乎工作正常。
但是,当我使用 mapView(mapView: MKMapView!, didDeselectAnnotationView view: MKAnnotationView!)
方法在取消选择后将图像改回原样时,它会重新绘制左上角的注释 map 。任何用户与 map 的交互都会立即在适当的位置重新绘制它,所以就好像 map 在方法调用后直到单击或进行其他操作后才被刷新。
这实际上是更改注释图像的正确方法吗(通过覆盖当前的 view.annotation.image
,如果是,是否有刷新 map 的方法?
编辑:我还注意到,每次我选择一个新注释时,它都会将 map 中心向下拖动大约 100 像素。在调用上面提到的这两种方法中的任何一种之后,我是否遗漏了一些我需要做的事情?
最佳答案
您可以尝试使用 mapView.removeAnnotation(yourAnnotation)
和 mapview.addAnnotation(yourAnnotation)
删除并重新添加新图像的注释
关于ios - Swift:调用 didDeselectAnnotationView 后,MKMapView 注释出现在左上角,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29761694/