• (转载)如何实现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里面一样,这是什么原因呢
  • 相关阅读:
    Android Studio中图片的格式转换
    VS2013关于C++ Primer5 的3.42题报错
    VS2013 注释多行与取消多行注释快捷键
    【Ubuntu】安装tar.gz文件
    vs下程序运行结果框闪退的解决方案
    深度学习相关链接
    问题解决:Failed to get convolution algorithm. This is probably because cuDNN failed to initialize
    【验证码识别】Pillow、tesseract-ocr与pytesseract模块的安装以及错误解决
    霍夫变换原理(看完就懂)
    python 字节数组和字符串的互转
  • 原文地址:https://www.cnblogs.com/greywolf/p/2586863.html
Copyright © 2020-2023  润新知