10

MapView にユーザーのアバター画像を表示しています。アバターがアニメーションなしでレンダリングされている場合、アバターは機能しているように見えますが、ドロップをアニメーション化したいと思います。pinView.animatesDrop を true に設定すると、アバターが失われ、ピンに置き換えられます。ピンを使用せずにアバターのドロップをアニメーション化するにはどうすればよいですか?

私が使用している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;
}
4

2 に答える 2

35

注釈ビューに独自の画像を使用する場合MKAnnotationViewは、MKPinAnnotationView.

MKPinAnnotationViewは のサブクラスであるためMKAnnotationViewimageプロパティがありますが、一般的に (通常、予期しない場合) 無視され、代わりに組み込みのピン イメージが表示されます。

したがって、それと戦うのではなく、プレーンを使用するのが最善MKAnnotationViewです。

使用しないことで失う大きなものMKPinAnnotationViewは、手動で実装する必要がある組み込みのドロップ アニメーションです。

詳細については、この以前の回答を参照してください:
MKMapView: 注釈ピンの代わりに、カスタム ビュー

于 2012-05-17T17:45:56.847 に答える
3

この問題に遭遇し、 の代わりにいることが確実な場合は、MKAnnotationViewのデリゲート プロパティが null になっていないことを確認してください。MKPinAnnotationViewMKMapView

于 2013-12-11T17:53:22.317 に答える