我有一个自定义注释,它使用 viewForAnnotation 委托方法根据注释的类型设置其图像。我只使用 1 个表示汽车移动的注释,并且想要在检测到汽车移动和停止时更改图像。除了删除我的注释并重新添加它会导致眨眼之外,我还能怎么做呢?
问问题
3473 次
1 回答
11
无论您在哪里检测到汽车的状态发生了变化,都可以使用MKMapView
实例方法检索注解的当前视图viewForAnnotation:
。这与mapView:viewForAnnotation:
委托方法不同。
获取注解的当前视图后,您可以修改其属性,包括image
.
还要确保委托方法具有基于汽车注释状态mapView:viewForAnnotation:
设置的完全相同的条件。image
您可能希望将逻辑放在从两个地方(状态更改和委托方法)调用的通用方法中,这样代码就不会重复。
例如,当状态发生变化时,您可能有:
//carAnnotation is your id<MKAnnotation> object
MKAnnotationView *av = [mapView viewForAnnotation:carAnnotation];
if (carAnnotation.isMoving)
av.image = [UIImage imageNamed:@"moving.png"];
else
av.image = [UIImage imageNamed:@"stopped.png"];
该if
语句(或您必须设置的任何逻辑image
)也是viewForAnnotation
委托方法中应该包含的部分。
于 2012-05-04T12:27:12.047 回答