gpt4 book ai didi

ios - 如何在 Xamarin.iOS 中使用动画移动 map 注释?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:02:48 25 4
gpt4 key购买 nike

我有自定义注释(MKAnnotation 继承者),我想将它移到 AddAnnotation 之后。

Coordinate 属性被覆盖,但 KVO(setCoordinate: 的动画基于)似乎不起作用。

最佳答案

我通过在 Coordinate 属性的 setter 中手动调用 KVO willChangeValuedidChangeValue 方法解决了这个问题。像这样:

    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 => {

});
});
});

这有点 hacky,但它确实有效。它为调用 AddAnnotations 的方法提供了返回的机会,然后更新坐标。您或许可以对动画延迟执行相同的操作,但它对我不起作用。

关于ios - 如何在 Xamarin.iOS 中使用动画移动 map 注释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19707419/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com