我有一个自定义注释,它使用viewForAnnotation委托方法根据注释的类型设置其图像。我只使用1个注释代表汽车移动,并希望在检测到汽车移动和停止时更改图像。除了删除我的注释并重新添加它以引起眨眼之外,我怎么能这样做呢?
答案 0 :(得分: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
委托方法中也应包含的部分。