Я установил NSMutableArray объектов, производных от класса, который соответствует протоколу MKAnnotation. У меня есть установочный заголовок и подзаголовок для аннотации, и я успешно добавил их в MKMapView, используя:
[[self customMapView] addAnnotations:locationArray];
Теперь я хочу анимировать опускание контактов. Сначала я думал, что смогу сделать это с помощью Option1 , используя это, все работает, но булавки не делают анимированного падения.
// 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];
}
}
Следующим моим предположением было попробовать Option2 , похоже, это работает очень хорошо, но у меня есть две проблемы. Заголовок и подзаголовок не отображаются, мой пользовательский объект аннотации передается (я вижу его в отладчике), но содержащаяся информация не передается на новый вывод
. Во-вторых, создается новый набор MKAnnotationViews, что происходит со старыми, есть ли проблемы с утечками памяти?
// 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;
}
РЕДАКТИРОВАТЬ: Я решил недостающий заголовок и подзаголовок, добавив pin.canShowCallout = YES;