玩过google app的都知道,我们在地图上加一个目的地的时候,annotationview是从上掉下来的,如何实现这样的效果?经过实战,我找到有两种方法可以完成这样的效果。
第一种是实现MKMapViewDelegate的一个方法,然后自已实现下落的动画效果,代码如下:
- - (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];
- }
- }
- - (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;
- }
注意,就是
- pinView.animatesDrop = YES;