(转载)如何实现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里面一样,这是什么原因呢
posted @ 2012-07-11 19:38  GreyWolf  阅读(265)  评论(0编辑  收藏  举报