2011-06-12 81 views
1

我想做一個UIWebView的截圖,我用這個代碼截圖UIWebView的內容

代碼:

UIGraphicsBeginImageContext(self.vistaWeb.bounds.size); 
[vistaWeb.layer renderInContext:UIGraphicsGetCurrentContext()]; 
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
UIImageWriteToSavedPhotosAlbum(viewImage,nil,NULL,NULL); 

,它工作得很好,我的問題是,我要讓所有的截圖uiwebview,不僅是可見的視圖...例如,我有一個200x200的uiwebview,但是該頁面是200x500,這個代碼我做了200x200的屏幕截圖,而我想做一個200x500的屏幕截圖。我必須做什麼?

kikko088

+0

@ kikko088:您好,我太中號面臨着同樣的problem..can您分享您的代碼,請儘快幫忙。謝謝! – 2012-07-10 06:03:57

回答

3

的問題是在該行:

UIGraphicsBeginImageContext(self.vistaWeb.bounds.size); 

您使用您的視圖的大小,而不是它的內容的大小。爲了獲得您的網頁的大小使用以下approach。然後,用適當的尺寸替換self.vistaWeb.bounds.size

爲了支持視網膜應替換爲以下代碼的第一行:

CGSize layerSize = ... 
if ([UIScreen instancesRespondToSelector:@selector(scale)] && [[UIScreen mainScreen] scale] == 2.0f) { 
    UIGraphicsBeginImageContextWithOptions(layerSize, NO, 2.0f); 
} else { 
    UIGraphicsBeginImageContext(layerSize); 
} 
+0

非常感謝!現在是完美的....只有另一個問題,我該如何提高圖像質量?現在是低 - 低質量.. – kikko088 2011-06-12 20:41:32

+0

@ kikko088圖像將完全在屏幕上。我能想到的唯一問題是您的代碼不適應視網膜設備。這是爲所有設備開始圖像上下文的正確方法:http://codinggeek.org/2011/02/21/retina-and-ios-sdk-part-ii-uigraphicsbeginimagecontext/ – Anton 2011-06-12 20:45:33

+0

在這裏,我把3屏幕截圖,和照相機卷的照片,webview準備好視網膜顯示,所有圖像都在svg中(然後是矢量圖)www.endurodoc.net/1.png www.endurodoc.net/2.png www.endurodoc.net/3 .png – kikko088 2011-06-12 21:03:42