2011-07-01 8 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

私はこれを試しましたが、ピンのいくつかは高速で落ちていましたが、デフォルトスピードで落ちていました... delayIntervalに0.0を設定しようとしましたが、ピンは一度に落ちていません... – nobu86

+0

表示される問題を正確に複製することはできませんが、注釈は別々のバッチまたは単一のメソッド呼び出しで追加されていますか?別のメソッド呼び出しでは、NSMutableArrayに注釈を追加してから、addAnnotationsを配列で呼び出してすべてを一度に追加してみてください。または、アノテーションが追加されるのと同時に、他の時間を費やす処理が行われますか? – Anna

+0

私はあなたが言ったことをしました。 すべてのピンをNSMutableArrayに追加し、addAnnotationSメソッドを追加しました。そして何も変わっていない。 そして、私は同時に他のプロセスを進めていません。私は次のようなことをしています。 デリゲートする前に、デリゲートする前にメソッドのすべてのピンを追加する: – nobu86

関連する問題