2011-07-01 4 views

답변

1

didAddAnnotationViews 대리자 메서드에서 직접 드롭 애니메이션을 구현해야합니다. 더블 애니메이션을 피하려면 animatesDropNO으로 설정해야합니다.

- (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; 
    } 
} 

이렇게하면 지정한 비율로 주석이 삭제됩니다.

모두 한꺼번에 놓으려면 delayInterval 대신 delay 매개 변수를 0.0으로 하드 코딩하십시오.

+0

나는이 시도하지만, 핀의 일부는 높은 속도로 떨어지고 있지만, 다른 기본 속도로 떨어지고 ... 내가 delayInterval 0.0을 설정하려고했으나 핀은 한 번에 너무 ... – nobu86

+0

I를 포기하지 않습니다 표시되는 문제를 정확히 복제 할 수는 없지만 별도의 배치 또는 단일 메소드 호출에 주석이 추가됩니까? 별도의 메소드 호출 인 경우 먼저 NSMutableArray에 주석을 추가 한 다음 배열을 사용하여 addAnnotations를 호출하여 한 번에 모두 추가하십시오. 또는 특수 효과가 추가되는 것과 동시에 다른 시간이 많이 걸리는 처리가 있습니까? – Anna

+0

나는 당신이 말한 것을했습니다. NSMutableArray에 모든 핀을 추가 한 다음 addAnnotationS 메소드를 추가했습니다. 그리고 아무것도 바뀌지 않았습니다. 그리고 다른 어떤 프로세스도 동시에 진행하지 않습니다. 나는 다음과 같이하고있다. 위임을하기 전에 메소드의 모든 핀을 추가한다 : – nobu86