更改已取消排队的注释视图的图像会导致先前使用的图像短暂显示



我正在编写一个在地图上显示一组缩略图的应用程序。当我需要显示新的缩略图时,我使用取消排队可重用注释视图与标识符取消排队地图注释视图。然后,我更改注释视图图像。似乎有一种动画效果从以前使用注释视图时使用的图像淡出到新分配的图像。有没有一种简单的方法可以只显示新图像而不显示动画。

在:

func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation(

我试过:

MKAnnotationView(annotation: annotation, reuseIdentifier: nil(

即创建一个新的注释视图,该视图在滚动屏幕或被应用程序删除后不会重复使用。这解决了问题,但批注视图将永远不可用于取消排队可重用批注视图。出于性能原因,不建议这样做,但它解决了我的问题!这是唯一的解决方案吗?

在你的 MKAnnotationView 子类中,你应该有类似的东西

override var annotation: MKAnnotation? {
willSet {
...
}
}

如果不再需要MKAnnotationView实例,MapKit 会设置annotation = nil

这是willSet清理目标的绝佳时机:将图像设置为 nil,也许也可以将您使用的其他属性设置为 nil。

如果这样做,则不应显示可以显示的引用图像。

最新更新