我想要做的是,当我取消选择一个引脚时,引脚视图将它的UI更改回未选定的状态(例如更改引脚的背景颜色)。
- (void)mapView:(MKMapView *)mapView didDeselectAnnotationView:(MKAnnotationView *)view
{
//do something;
XLMapItemAnnotation* mapItem = [self annotationForView:view];
[view prepareForReuse];
}通过使用这段代码,当我在iOS 11中运行应用程序时,如果我取消选择一个引脚,这个引脚就会完全消失在地图视图中。如果我去掉prepareForReuse,一切都会好起来的。还有一些代码,如果我在iOS 10中运行这个应用程序,一切都很好,没有销钉会消失。sbd能给我一个提示吗,有什么问题吗?
发布于 2017-12-07 04:28:49
您不应该自己调用-prepareForReuse,它的目的是让MapKit自己调用自己。
发布于 2017-12-08 03:54:17
正如@Tim所说,-prepareForReuse是为MKAnnotationView的重用机制设计的,您不应该自己调用它。
在iOS 11中,MapKit为MKAnnotationView引入了聚类算法(但经过一些尝试,我发现它有时会导致奇怪的行为)。在本例中,默认情况下MKAnnotationView.isHidden设置为true。因此,在调用-prepareForReuse之后,MKAnnotationView是隐藏的。
如果要更改引脚的颜色,只需直接更改pinTintColor属性,或根据需要使用函数重置所有属性。
https://stackoverflow.com/questions/47684198
复制相似问题