(转载)如何实现ipad中googlemap的callout和Popover的动画效果
具体的效果就是点击callout中的rightCalloutAccessoryView(一个button)后,callout窗口以动画效果缩小,消失后又逐渐展开一个Popover.
我的代码是这样的: - (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView<MKAnnotation> *)view calloutAccessoryControlTapped:(UIControl *)control { //[view dismissModalViewControllerAnimated:YES]; NSArray *anns = [[NSArray alloc] initWithArray:[_mapView selectedAnnotations]]; if ([anns count] > 0) { //[[anns objectAtIndex:0] setSelected:NO animated:YES]; [_mapView deselectAnnotation:[anns objectAtIndex:0] animated:YES]; } [anns release]; ...... cmccDetailController = [[CmccDetailController alloc]initWithNibName:@"CmccDetailController" bundle:nil]; cmccDetailController.contentSizeForViewInPopover = CGSizeMake(490,200); detailPopoverController = [[UIPopoverController alloc] initWithContentViewController:cmccDetailController]; // [detailPopoverController setPopoverContentSize:CGSizeMake(400,280)]; [detailPopoverController presentPopoverFromRect:rect inView:mapView permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 问题一:为什么[_mapView deselectAnnotation:[anns objectAtIndex:0] animated:YES];与[detailPopoverController presentPopoverFromRect:rect inView:mapView permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 的animated参数都为YES了运行起来又没有动画效果? 问题二:如何实现googlemap中callout和popover的动画效果? 先谢谢各位了. 找到了这个 http://www.cocoachina.com/bbs/read.php?tid-11820-fpage-3.html,学习了.
谢谢cocoachina. 解决了,在ContentViewController的viewDidAppear:方法里加入动画即可.
-(void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; self.contentSizeForViewInPopover = CGSizeMake(335, 0); [UIView beginAnimations:@"animationID" context:nil]; [UIView setAnimationDuration:0.5]; [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; [UIView setAnimationRepeatAutoreverses:NO]; CGSize contentSize; contentSize.width = self.contentSizeForViewInPopover.width; contentSize.height = 192; self.contentSizeForViewInPopover = contentSize; [UIView commitAnimations]; } 我按着您的方法做了一下,点callout的rightCalloutAccessoryView, 展开了一个popover, 这个时候如果进行横屏和竖屏的切换,展开的popover的位置就乱了,而不像google map里面一样,这是什么原因呢
|