1

我想截取 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 截图

我不知道出了什么问题。我已经尝试了一些代码。所有的结果都是一样的。如果我对整个视图进行截图,地图也看起来像上图。

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

4

1 回答 1

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 显示器。

于 2012-07-01T02:33:41.727 回答