MKPinAnnotationView自定义图像被replace为具有animation删除的引脚

我在MapView上显示用户头像图片。 如果不使用animation呈现,那么头像看起来可以正常工作,但是我想为它们设置animation。 如果我将pinView.animatesDrop设置为true,那么我将失去头像并将其replace为引脚。 如何在不使用图钉的情况下为我的头像下拉animation?

这里是我使用的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; } 

当您想要使用自己的图像作为注释视图时,最好创build一个普通的MKAnnotationView而不是MKPinAnnotationView

由于MKPinAnnotationViewMKPinAnnotationView的子类,它有一个image属性,但通常(通常当你不期望它)忽略它,并显示其内置的pin图像。

所以最好只使用普通的MKAnnotationView

由于不使用MKPinAnnotationView而丢失的MKPinAnnotationView是你必须手动实现的内置的拖放animation。

请参阅此前的答案了解更多详情:
MKMapView:而不是注释引脚,一个自定义视图

如果你遇到了这个问题,你确定你是MKAnnotationView而不是MKPinAnnotationView ,确保你的MKMapView的委托属性没有被删除。