2012-05-08 18 views
9

Tôi hiển thị hình ảnh đại diện người dùng trên MapView. Các avatar dường như đang hoạt động nếu chúng được hiển thị mà không có hoạt hình, tuy nhiên tôi muốn tạo hiệu ứng cho hoạt ảnh của chúng. Nếu tôi đặt pinView.animatesDrop thành true, thì tôi sẽ mất hình đại diện và nó được thay thế bằng ghim. Làm thế nào tôi có thể tạo hiệu ứng thả hình đại diện của tôi mà không cần sử dụng ghim?MKPinAnnotationView hình ảnh tùy chỉnh được thay thế bằng pin với hoạt hình thả

Đây là phương pháp viewForAnnotation của tôi, tôi đang sử dụng:

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

Vui lòng xem http://stackoverflow.com/questions/9814988/mkmapview-instead-of-annotation-pin-a-custom-view – Anna

+0

Liên kết của Anna trả lời câu hỏi của tôi. http://stackoverflow.com/questions/9814988/mkmapview-instead-of-annotation-pin-a-custom-view –

+0

Anna, hãy bình luận của bạn một câu trả lời để tôi có thể cung cấp tín dụng cho bạn. –

Trả lời

34

Khi bạn muốn sử dụng hình ảnh của riêng bạn cho một cái nhìn chú thích, tốt nhất là để tạo ra một thường xuyên MKAnnotationView thay vì một MKPinAnnotationView.

MKPinAnnotationView là phân lớp MKAnnotationView, nó có thuộc tính image nhưng thường (thường là khi bạn không mong đợi) bỏ qua và hiển thị hình ảnh được tích hợp sẵn của pin thay thế.

Vì vậy, thay vì chiến đấu với nó, cách tốt nhất là chỉ sử dụng số đơn giản MKAnnotationView.

Điều quan trọng bạn bị mất do không sử dụng MKPinAnnotationView là hoạt ảnh thả được tích hợp sẵn mà bạn sẽ phải thực hiện theo cách thủ công.

Xem câu trả lời này trước để biết thêm chi tiết:
MKMapView: Instead of Annotation Pin, a custom view

3

Nếu bạn đang ngại về vấn đề này và bạn chắc chắn rằng bạn đang MKAnnotationView thay vì một MKPinAnnotationView, đảm bảo tài sản đại biểu MKMapView của bạn đã không được nilled.

Các vấn đề liên quan