我CABasicAnimation
在AnnotationView
图层中添加了一个来模拟在地图视图上移动的汽车。
这工作正常,直到我在动画进行时尝试放大或缩小地图视图。
我发现缩放地图视图时动画注释视图消失了!
我猜这可能是由于在缩放地图视图时与动画对象关联的图层已被删除。
我尝试通过在缩放时停止动画来解决这个问题。但结果并不好。汽车似乎跳到目标点。
有人对此有想法吗?
任何人都知道如何在缩放地图视图时使动画仍然运行?
我CABasicAnimation
在AnnotationView
图层中添加了一个来模拟在地图视图上移动的汽车。
这工作正常,直到我在动画进行时尝试放大或缩小地图视图。
我发现缩放地图视图时动画注释视图消失了!
我猜这可能是由于在缩放地图视图时与动画对象关联的图层已被删除。
我尝试通过在缩放时停止动画来解决这个问题。但结果并不好。汽车似乎跳到目标点。
有人对此有想法吗?
任何人都知道如何在缩放地图视图时使动画仍然运行?
我不知道如何以编程方式解决您的问题,但是如果在用户开始缩放时正确存储汽车位置(点 a),当缩放完成时,计算当前位置和新位置之间的距离(点 b ) 然后将其从 a 点设置到 b 点。这样,汽车就不会“跳”到第二个目标点。为了让它更漂亮一点,以正常速度的两倍启动汽车速度,然后在接近“B”点时减速至正常速度。我认为这会让它看起来不像是一个错误,而更像是一个效果。
我通过终止 regionWillChangeAnimated 上的所有注释动画来解决它:-
- (void)mapView:(MKMapView *)mapView regionWillChangeAnimated:(BOOL)animated
{
for (int i=0;i< [mapView.annotations count];i++)
{
id annotation = [mapView.annotations objectAtIndex:i];
MKAnnotationView* annView =[mapView viewForAnnotation: annotation];
if (annView != nil)
{
CALayer* layer = annView.layer;
[layer removeAllAnimations];
}
}
}
I think,you can use of the mapView:regionDidChangeAnimated:
delegate method. Any time the user scrolls/zooms, this method will be called. just try once. It may help you.