ios MapKit MKOverlayView动画即刻发生

时间:2011-11-05 15:35:59

标签: ios animation mapkit overlay

我正在尝试使用以下代码为iOS 5中的MapKit重叠视图(特别是MKCircleView)的alpha值设置动画:

-(void) animateCircle:(MKCircle*)circle onMap:(MKMapView*) mapView
{
    MKCircleView * circleView = (MKCircleView*) [mapView viewForOverlay:circle];
    UIViewAnimationOptions options = UIViewAnimationOptionCurveEaseInOut|UIViewAnimationOptionTransitionNone;
    [UIView animateWithDuration:5.0 
                          delay:0.0 
                        options:options 
                     animations:^(void) { circleView.alpha = 0.9; }
                     completion:^(BOOL finished) {} 
     ];    
}

叠加层的alpha值正在按我的意愿改变,但它会瞬间跳到那里,而不是在指定的持续时间内动画。

有人可以建议可能出错吗?也许覆盖视图上的动画与块相比比我想象的要复杂得多。

1 个答案:

答案 0 :(得分:0)

当并发动画影响同一视图时,核心动画有一个有趣的行为......如果你试图在视图的最后一个动画完成之前为视图设置动画,它会假设你打算让后续动画从所需的最终状态开始最初的一个。这可能导致帧的跳跃以及alpha值的跳跃。

在您的情况下,此视图可能会被其他内容激活。尝试在UIViewAnimationOptionBeginFromCurrentState中找到并删除其他动画/或其选项。