2010-08-02 15 views
3

J'utilise un mkmapview et je laisse tomber des broches. Je voudrais que les épingles tombent une par une, plutôt que toutes simultanément. Au départ, je l'appelaisiphone mapkit: les broches tombent une à une

[self performSelector:@selector(dropPin) withObject:nil afterDelay:dropTime]; 

où dropTime était un retard différent pour chaque broche et DROPPIN était une méthode pour faire la chute de la broche. Malheureusement, le multithreading derrière cela semble causer un crash.

Est-ce que quelqu'un connaît un meilleur moyen?

Répondre

3

Si vous ciblez iOS4, les blocs sont une excellente façon de gérer des animations sans se soucier des délégués, callbacks ou sélecteurs:

- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views { 
    if ([views count] == 0) { 
     return; 
    } 
    MKAnnotationView *aV; 
    for (aV in views) { 
     // set up pin beginning and end frames, shadow subview frame and center 

     [UIView animateWithDuration:0.75 
           delay:(0.0 + [views indexOfObject:aV]/10.0) 
          options:UIViewAnimationOptionCurveEaseOut 
         animations:^{ 
          [aV setFrame:endFrame]; 
          // animate the shadow subview's center point 
         } 
         completion:^ (BOOL finished) { 
          if (finished) { 
           // do something here when the animation finished 
          } 
         }]; 
} 
+0

Ce serait génial d'avoir une solution compatible iOS 3. – samvermette