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
。
由于MKPinAnnotationView
是MKPinAnnotationView
的子类,它有一个image
属性,但通常(通常当你不期望它)忽略它,并显示其内置的pin图像。
所以最好只使用普通的MKAnnotationView
。
由于不使用MKPinAnnotationView
而丢失的MKPinAnnotationView
是你必须手动实现的内置的拖放animation。
请参阅此前的答案了解更多详情:
MKMapView:而不是注释引脚,一个自定义视图
如果你遇到了这个问题,你确定你是MKAnnotationView
而不是MKPinAnnotationView
,确保你的MKMapView
的委托属性没有被删除。