在编程方式下采用MKMapView ScreenShot不会捕获叠加层

时间:2012-12-05 06:21:22

标签: iphone ios xcode mkmapview mapkit

我一直试图在MKMapView上截取我正在绘制用户位置的截图,使用BreadCrumbsCrumbPath类和CrumbPathView叠加层和叠加层视图类绘制路径。

以下是我用于获取屏幕截图的代码:

if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)])
    UIGraphicsBeginImageContextWithOptions(self.view.frame.size, NO, [UIScreen mainScreen].scale);

else
    UIGraphicsBeginImageContext(self.view.frame.size);

[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage * viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIImage * croppedImage = [Utils cropImage:viewImage withFrame:_map.frame];    
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(croppedImage, nil, nil, nil);

ScreenShot我想要得到的应该是这样的:

enter image description here

但ScreenShot看起来像这样:

enter image description here

在这里您可以注意到ScreenShot中没有蓝线(用户位置路径)。

任何人都可以帮我建议解决方案或我在这里做错了什么?

谢谢大家。

1 个答案:

答案 0 :(得分:1)

使用此我的自定义方法返回当前视图的图像..

- (UIImage *)captureView {

   //hide controls if needed
    CGRect rect = [self.view bounds];

    UIGraphicsBeginImageContext(rect.size);
    CGContextRef context = UIGraphicsGetCurrentContext();
    [self.view.layer renderInContext:context];   
    UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return img;

}