2012-07-01 53 views
1

我要帶一個MapView的截圖並保存到照片截圖/快照從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

編輯:

- (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允許您使用的比例因子提供。比例因子爲零將其設置爲設備主屏幕的比例因子。這使您能夠獲得最清晰,最高分辨率的顯示快照,包括視網膜顯示。

+0

我已經改變了代碼以: 如果([[UIScreen mainScreen] respondsToSelector:@selector(刻度)]) UIGraphicsBeginImageContextWithOptions(mapView.frame.size,NO,0.0); // [UIScreen mainScreen] .scale); else UIGraphicsBeginImageContextWithOptions(mapView.frame.size,NO,0.0); [mapView.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage * viewImage = UIGraphicsGetImageFromCurrentImageContext(); \t UIGraphicsEndImageContext(); \t UIImageWriteToSavedPhotosAlbum(viewImage,nil,nil,nil); 但它總是一樣的結果。 :-( – user1493720

+0

我發現有在本次發行前的錯誤... – user1493720

+0

看起來它仍然是一個錯誤 - 不能搶的MKMapView的保存的圖像 – jmstone617