2012-05-08 9 views
9

Sto visualizzando immagini di avatar utente su un MapView. Gli avatar sembrano funzionare se sono renderizzati senza animazione, tuttavia mi piacerebbe animare la loro caduta. Se imposto pinView.animatesDrop su true, allora perdo l'avatar e viene sostituito dal pin. Come posso animare la caduta del mio avatar senza usare lo spillo?MKPinAnnotationView L'immagine personalizzata è sostituita dal pin con il calo di animazione

Ecco il mio metodo viewForAnnotation sto usando:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation { 
    if ([annotation isKindOfClass:[MKUserLocation class]]) 
     return nil; 

    MKPinAnnotationView* pinView = (MKPinAnnotationView*)[self.mapView dequeueReusableAnnotationViewWithIdentifier:@"MyAnnotation"]; 

    if (!pinView) { 
     pinView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"CustomPinAnnotation"]; 
    } 
    else 
     pinView.annotation = annotation; 

    //If I set this to true, my image is replaced by the pin 
    //pinView.animatesDrop = true; 

    //I'm using SDWebImage 
    [pinView setImageWithURL:[NSURL URLWithString:@"/pathtosomeavatar.png"] placeholderImage:[UIImage imageNamed:@"placeholder.png"]]; 

    //Adding a nice drop shadow here 
    pinView.layer.shadowColor = [UIColor blackColor].CGColor; 
    pinView.layer.shadowOffset = CGSizeMake(0, 1); 
    pinView.layer.shadowOpacity = 0.5; 
    pinView.layer.shadowRadius = 3.0; 

    return pinView; 
} 
+1

Vedere http://stackoverflow.com/questions/9814988/mkmapview-instead-of-annotation-pin-a-custom-view – Anna

+0

Il link di Anna risponde alla mia domanda. http://stackoverflow.com/questions/9814988/mkmapview-instead-of-annotation-pin-a-custom-view –

+0

Anna, si prega di rendere il vostro commento una risposta in modo che possa darvi credito. –

risposta

34

Quando si desidera utilizzare la propria immagine per una vista annotazione, è meglio per creare un regolare MKAnnotationView invece di un MKPinAnnotationView.

Dal MKPinAnnotationView è una sottoclasse di MKAnnotationView, esso ha una proprietà image ma in generale (di solito quando non lo aspetti) ignora e visualizza la sua built-in immagine Perno, invece.

Quindi piuttosto che litigare con esso, è meglio usare solo un semplice MKAnnotationView.

La grande cosa che si perde usando non è l'animazione di rilascio incorporata che dovrà essere implementata manualmente.

Vedere questa risposta precedente per maggiori dettagli:
MKMapView: Instead of Annotation Pin, a custom view

3

Se stai inciampare su questo tema e sei sicuro che sei MKAnnotationView invece di un MKPinAnnotationView, assicurare la vostra proprietà delegato s' MKMapView non è stato notificato.