2012-05-08 46 views
9

我上的MapView的顯示用戶的化身的圖像。如果不使用動畫呈現化身,那麼這些化身似乎可以正常工作,但是我想爲它們製作動畫。如果我設置pinView.animatesDrop爲真,那麼我失去了形象,它被銷取代。如何在不使用引腳的情況下爲我的頭像下拉動畫?MKPinAnnotationView自定義圖像是通過銷代替動畫降

這裏是我的viewForAnnotation方法我使用:

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

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

+0

安娜的鏈接回答我的問題。 http://stackoverflow.com/questions/9814988/mkmapview-instead-of-annotation-pin-a-custom-view –

+0

安娜,請讓你的評論一個答案,所以我可以給你信貸。 –

回答

34

當你想使用自己的圖像註釋視圖,最好創建一個常規MKAnnotationView而不是MKPinAnnotationView

由於MKPinAnnotationViewMKAnnotationView一個子類,它有一個image屬性,但它通常(通常,當你不希望它),忽略它,並顯示其內置的圖釘圖像代替。

因此,而不是與它戰鬥,最好只使用一個普通MKAnnotationView

你不可能不使用MKPinAnnotationView最重要的事情是,你必須手動實現內置的下降動畫。

詳情請參見本以前的答案:
MKMapView: Instead of Annotation Pin, a custom view

3

如果你絆腳石到這個問題,你確定你是MKAnnotationView,而不是MKPinAnnotationView,確保您MKMapView的委託財產尚未被清除。