我想拍一张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
我不知道出了什么问题。我已经尝试了一些代码。都具有相同的结果。如果我制作整个视图的屏幕截图,地图也会如上图所示。
有没有人有任何想法或可以帮助我?
答案 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显示屏。