分類: iPhone Tutorial 2011-07-12 12:10 60人閱讀 評論(0) 收藏 舉報
玩過google app的都知道,我們在地圖上加一個目的地的時候,annotationview是從上掉下來的,如何?這樣的效果?經過實戰,我找到有兩種方法可以完成這樣的效果。
第一種是實現MKMapViewDelegate的一個方法,然後自已實現下落的動畫效果,代碼如下:
view plain
- - (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views {
- MKAnnotationView *aV;
- for (aV in views) {
- CGRect endFrame = aV.frame;
-
- aV.frame = CGRectMake(aV.frame.origin.x, aV.frame.origin.y - 230.0, aV.frame.size.width, aV.frame.size.height);
-
- [UIView beginAnimations:nil context:NULL];
- [UIView setAnimationDuration:0.45];
- [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
- [aV setFrame:endFrame];
- [UIView commitAnimations];
-
- }
- }
第二種方法很簡單,只需要設定一個annotationview的屬性值,也是在MKMapViewDelegate的一個方法中實現,代碼如下:view plain
- - (MKAnnotationView *)mapView:(MKMapView *)mV viewForAnnotation:(id <MKAnnotation>)annotation
- {
- if (annotation == mV.userLocation) {
- return nil;
- }
- MKPinAnnotationView *pinView = nil;
- static NSString *defaultPinID = @"custom pin";
- pinView = (MKPinAnnotationView *)[mV dequeueReusableAnnotationViewWithIdentifier:defaultPinID];
- if ( pinView == nil )
- {
- pinView = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:defaultPinID] autorelease];
- [pinView setDraggable:YES];
-
- }
- pinView.pinColor = MKPinAnnotationColorRed;
-
- pinView.canShowCallout = YES;
- pinView.animatesDrop = YES;
-
- return pinView;
- }
注意,就是
view plain
- pinView.animatesDrop = YES;
起的作用。