ios MapKit MKOverlayView анимация происходит мгновенно

Я пытаюсь анимировать альфа-значение представления наложения MapKit (в частности, MKCircleView) в iOS 5, используя следующий код:

-(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) {} 
     ];    
}

Альфа-значение наложения изменяется, как я хочу, но оно скачет там мгновенно, а не анимируется в течение указанной продолжительности.

Кто-нибудь может подсказать, что может быть не так? Возможно, анимация при наложении изображений сложнее с блоками, чем я думал.

1 ответ

Базовая анимация имеет интересное поведение, когда одновременные анимации влияют на один и тот же вид... Если вы попытаетесь анимировать вид до того, как завершится последняя анимация представления, он будет предполагать, что вы предполагали, что последующая анимация будет начинаться с желаемого конечного состояния исходного. Это может привести к скачкам кадров, а также к скачкам альфа-значений.

В вашем случае этот вид, вероятно, оживляется чем-то другим. Попробуйте найти и удалить другие анимации / или ссылки в UIViewAnimationOptionBeginFromCurrentState с его параметрами.

Другие вопросы по тегам