Tôi đã thiết lập NSMutableArray của các đối tượng bắt nguồn từ một lớp phù hợp với giao thức MKAnnotation. Tôi có tiêu đề thiết lập cài đặt và phụ đề cho các chú thích và đã thêm thành công chúng đến MKMapView sử dụng:MKMapView, animateDrop?
[[self customMapView] addAnnotations:locationArray];
Những gì tôi muốn làm bây giờ là animate chân rơi, ban đầu tôi nghĩ tôi có thể làm điều đó với OPTION1 , bằng cách sử dụng tất cả mọi thứ hoạt động, nhưng các chân không làm một thả hoạt hình.
// Option1
// WORKS FOR: pinColor YES, animatesDrop NO, LABEL YES
- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views {
for(MKPinAnnotationView *eachView in views) {
[eachView setAnimatesDrop:YES];
[eachView setPinColor:MKPinAnnotationColorPurple];
}
}
đoán tiếp theo của tôi là cố gắng OPTION2, điều này dường như làm việc rất tốt nhưng tôi có hai vấn đề. Tiêu đề và phụ đề không hiển thị, đối tượng chú thích tùy chỉnh của tôi đang được truyền vào (tôi có thể nhìn thấy nó trong trình gỡ lỗi) nhưng thông tin chứa không được chuyển sang đối tượng mới pin
. Thứ hai, điều này tạo ra một bộ mới của MKAnnotationViews, những gì sẽ xảy ra với những cái cũ, có và các vấn đề với rò rỉ bộ nhớ?
// Option2
//FOR: pinColor YES, animatesDrop YES, LABEL NO
- (MKAnnotationView *) mapView: (MKMapView *) mapView viewForAnnotation: (id<MKAnnotation>) annotation {
MKPinAnnotationView *pin = (MKPinAnnotationView *) [mapView dequeueReusableAnnotationViewWithIdentifier: @"annotation_ID"];
if (pin == nil) {
pin = [[[MKPinAnnotationView alloc] initWithAnnotation: annotation reuseIdentifier: @"annotation_ID"] autorelease];
} else {
pin.annotation = annotation;
}
pin.pinColor = MKPinAnnotationColorRed;
pin.animatesDrop = YES;
return pin;
}
EDIT: Tôi đã giải quyết được thiếu tiêu đề & phụ đề bằng cách thêm pin.canShowCallout = YES;
Trong mã phương án 2 của bạn, khi pin được tạo ra nó sẽ không có tập chú thích. Tôi sẽ xóa "else" và thụt lề dòng ghi chú pin.annotation =, để nó luôn được thiết lập. – theLastNightTrain