2011-07-01 1 views

ответ

1

Вам необходимо реализовать свою собственную анимацию капель в методе делегата didAddAnnotationViews. Вы также должны установить animatesDrop на NO, чтобы избежать возможной двойной анимации.

- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)annotationViews 
{ 
    NSTimeInterval delayInterval = 0; 

    for (MKAnnotationView *annView in annotationViews) 
    { 
     CGRect endFrame = annView.frame; 

     annView.frame = CGRectOffset(endFrame, 0, -500); 

     [UIView animateWithDuration:0.125 
           delay:delayInterval 
          options:UIViewAnimationOptionAllowUserInteraction 
         animations:^{ annView.frame = endFrame; } 
         completion:NULL]; 

     delayInterval += 0.0625; 
    } 
} 

Это сокращает аннотации со скоростью, указанной вами.

Чтобы отбросить их все сразу, скорректируйте параметр delay на 0.0 вместо приращения delayInterval.

+0

Я пробовал это, но некоторые штыри сбрасываются с высокой скоростью, но другие выпадают со скоростью по умолчанию ... Я попытался установить 0.0 на delayInterval, но штыри тоже не отбрасываются одновременно ... – nobu86

+0

I я не могу точно дублировать проблемы, которые вы видите, но: добавляются ли аннотации отдельными партиями или одним вызовом метода? Если в отдельных вызовах метода попробуйте сначала добавить аннотации в NSMutableArray, а затем вызовите addAnnotations с массивом, чтобы добавить все сразу. Или у вас есть какая-то другая длительная обработка, проходящая одновременно с добавлением аннотаций? – Anna

+0

Я сделал то, что вы сказали. Добавил все контакты в NSMutableArray, а затем добавил его с помощью метода addAnnotationS. И ничего не изменилось. И у меня не будет другого процесса в одно и то же время. Я делаю что-то вроде этого: , добавляя все контакты в методе до его делегирования: – nobu86

 Смежные вопросы

  • Нет связанных вопросов^_^