5
我有一個自定義註釋,它使用viewForAnnotation委託方法基於註釋的類型設置其圖像。我只使用1個註釋,表示汽車正在移動,並且想要在檢測到汽車正在移動和停止時更改圖像。除了刪除我的註釋並重新添加引起眨眼之外,我怎麼能解決這個問題?更改註釋圖像創建後
我有一個自定義註釋,它使用viewForAnnotation委託方法基於註釋的類型設置其圖像。我只使用1個註釋,表示汽車正在移動,並且想要在檢測到汽車正在移動和停止時更改圖像。除了刪除我的註釋並重新添加引起眨眼之外,我怎麼能解決這個問題?更改註釋圖像創建後
無論您檢測到汽車狀態發生變化,都可以使用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
委託方法。
不知道爲什麼這沒有得到upvote ..好的答案 – Sean