截图/来自mapView的快照存储空白地图

时间:2012-07-01 01:39:21

标签: objective-c ios xcode uiimage mkmapview

我想拍一张MapView的截图并保存到照片

这是使用过的来源:

- (IBAction)screenshot:(id)sender {



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

else


UIGraphicsBeginImageContext(mapView.frame.size);
[mapView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage * viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(viewImage, nil, nil, nil);

}

动作成功,但照片在这里看起来像这样 MapView Screenshot

我不知道出了什么问题。我已经尝试了一些代码。都具有相同的结果。如果我制作整个视图的屏幕截图,地图也会如上图所示。

有没有人有任何想法或可以帮助我?

1 个答案:

答案 0 :(得分:0)

修改

 - (UIImage*) ImageFromMapView
{
  UIGraphicsBeginImageContext(self.frame.size);
  [self.layer renderInContext:UIGraphicsGetCurrentContext()];
  //[[[yourmapView.layer sublayers] objectAtIndex:1] renderInContext:UIGraphicsGetCurrentContext()];  try this upper fails
  UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
  UIGraphicsEndImageContext();  
  return image;
}

尝试使用UIGraphicsBeginImageContextWithOptions而不是UIGraphicsBeginImageContext:

 UIGraphicsBeginImageContextWithOptions(self.frame.size, NO, 0.0);

注意:从iOS 4开始,UIGraphicsBeginImageContextWithOptions允许您提供比例因子。比例因子为零将其设置为设备主屏幕的比例因子。这使您可以获得最清晰,最高分辨率的显示屏快照,包括Retina显示屏。