如何使iOS地图加Annotation有从空中掉下来的效果

玩过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];
		
	}
}


第二种方法很简单,只需要设置一个annotationview的属性值,也是在MKMapViewDelegate的一个方法中实现,代码如下:

- (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;
起的作用。


你可能感兴趣的:(ios,Google,null,UIView)