2013-04-08 56 views
0

在我的mapview中,我目前有註釋設置爲NO的bool animatesDrop。這是因爲在viewWillAppear中繪製mapView註釋時,我不會在它們動畫的時候。但是,我還有一個刷新按鈕,用於重新標註註釋,並在推送時讓它們動畫(放置)。有沒有辦法完成這個?謝謝。iOS mapView animatesDrop

-(MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation { 

    if ([annotation isKindOfClass:[MKUserLocation class]]) { 

     return nil; 
    } 

    MyPin = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"current"]; 

    UIButton *calloutButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; 

    UIButton *directionsButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
    directionsButton.frame = CGRectMake(0, 0, 23, 23); 
    [directionsButton setBackgroundImage:[UIImage imageNamed:@"directions.png"] forState:UIControlStateNormal]; 

    MyPin.leftCalloutAccessoryView = directionsButton; 
    MyPin.rightCalloutAccessoryView = calloutButton; 
    MyPin.draggable = NO; 
    MyPin.highlighted = NO; 
    MyPin.animatesDrop= YES; 
    MyPin.canShowCallout = YES; 

    return MyPin; 
} 

回答

2

「硬球」方法是建立一個布爾屬性,在viewWillAppear中設置爲false,但在按鈕的動作中設置爲true。將MyPin.animatesDrop設置爲viewForAnnotation中的屬性。不知道任何「優雅」的解決方案。

0

再次使用的代碼

[self.mapView removeAnnotations:self.usersAnnotationArray]; 

和註釋來MapView類刪除所有的註釋,使用BOOL可變檢查按鈕點擊在delagate方法設置

MyPin.animatesDrop= YES; 

-(MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation 
{ 
...... 
...... 
...... 
if(_IsButtonClikced) 
{ 
    MyPin.animatesDrop= YES; 

} 
else 
{ 
    MyPin.animatesDrop= NO; 

} 

................ 
....... 
..... 
}