2
我有自定義註釋(MKAnnotation
繼承者),我想移動它後AddAnnotation
。如何在Xamarin.iOS中使用動畫移動地圖註記?
Coordinate
屬性被覆蓋,但KVO(setCoordinate:
所依據的動畫)似乎不起作用。
我有自定義註釋(MKAnnotation
繼承者),我想移動它後AddAnnotation
。如何在Xamarin.iOS中使用動畫移動地圖註記?
Coordinate
屬性被覆蓋,但KVO(setCoordinate:
所依據的動畫)似乎不起作用。
我通過手動調用KVO willChangeValue
和didChangeValue
方法解決了Coordinate
屬性的設置方法。就像這樣:
public override CLLocationCoordinate2D Coordinate
{
get
{
var loc = UserInfo.Activity.MapLocation.Location;
return new CLLocationCoordinate2D(loc.Latitude, loc.Longitude);
}
set
{
WillChangeValue("coordinate");
//Save value here to some backing store
//e.g. _coordinate = value
DidChangeValue("coordinate");
}
}
動畫會這樣:
UIView.AnimateNotify(1.0,() => {
myAnnotation.Coordinate = targetCoordinates;
}, finished => {
});
我也有問題,如果添加多個註釋,其中一人是從左上角移動。我通過在後臺線程上面包裝動畫代碼來解決它:
System.Threading.ThreadPool.QueueUserWorkItem(state => {
InvokeOnMainThread(() => {
UIView.AnimateNotify(1.0,() => {
myAnnotation.Coordinate = targetCoordinates;
secondAnnotation.Coordinate = secondCoordinates;
}, finished => {
});
});
});
這有點不好意思,但它有效。它給出了調用AddAnnotations
機會的方法,然後更新座標。你或許可以對動畫延遲做同樣的事情,但它對我來說不起作用。