2012-05-08 16 views
9

Wyświetlam obrazy avatara użytkownika na MapView. Wygląda na to, że awatary działają, jeśli są renderowane bez animacji, jednak chciałbym animować ich upuszczenie. Jeśli ustawię właściwość pinView.animatesDrop na true, stracę awatar i zostanie on zastąpiony przez pinezkę. Jak mogę animować spadek mojego awatara bez użycia pinezki?MKPinAnnotationView niestandardowy obraz zastępuje pin z animowanym opadem

Oto moja metoda viewForAnnotation Używam:

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

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

+0

Link do Anny odpowiada na moje pytanie. http://stackoverflow.com/questions/9814988/mkmapview-instead-of-annotation-pin-a-custom-view –

+0

Anna, proszę, skomentuj odpowiedź, dzięki czemu mogę dać ci kredyt. –

Odpowiedz

34

Gdy chcesz użyć własnego obrazu dla widoku opisu, to najlepiej stworzyć regularny MKAnnotationView zamiast MKPinAnnotationView.

Od MKPinAnnotationView jest podklasą MKAnnotationView, ma właściwość image ale ogólnie (zwykle gdy go nie spodziewać) ignoruje go i wyświetla wbudowanym pin zamiast obrazu.

Tak więc zamiast walczyć z tym, najlepiej użyć zwykłego MKAnnotationView.

Wielką rzeczą, którą tracisz nie używając MKPinAnnotationView jest wbudowana animacja kropli, którą będziesz musiał zaimplementować ręcznie.

Zobacz tę poprzednią odpowiedź więcej szczegółów:
MKMapView: Instead of Annotation Pin, a custom view

3

Jeśli potykając się do tej kwestii i jesteś pewien, że jesteś MKAnnotationView zamiast MKPinAnnotationView, zapewnić właściwość delegata MKMapView „s nie został nilowany.

Powiązane problemy