屏幕截图UIWebView在IBAction中的完整内容

时间:2014-01-04 17:12:00

标签: ios uiwebview uiimage screenshot layer

Hello目前我在IBAction中有代码,它保存了UIWebView的截图,我想要它截取网页的全部内容(包括可见和不可用的内容)

到目前为止,我已设法通过可见内容显示完整内容大小的屏幕截图,但不可见内容的屏幕截图的其余部分为白色。

CGSize layerSize = [_myWebView sizeThatFits:myWebView.scrollView.contentSize]; if ([UIScreen instancesRespondToSelector:@selector(scale)] && [[UIScreen mainScreen] scale] == 2.0f) { UIGraphicsBeginImageContextWithOptions(layerSize, NO, 2.0f); UIGraphicsBeginImageContext(layerSize); } else { UIGraphicsBeginImageContext(layerSize); }

[_myWebView.scrollView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(viewImage, self, nil, nil); 

如何在屏幕截图中显示所有内容?

2 个答案:

答案 0 :(得分:0)

这是猜测:
尝试将webView的frame.size调整为等于scrollView contentSize。然后,重新加载webview并在重新加载完成后调用renderInContext:。看看它给你带来了什么。

答案 1 :(得分:0)

如果webview的框架等于superview(屏幕),那么webview将不会呈现超出界限的内容。因此,您必须将webview的框架设置为其contentSize并进行屏幕截图。

只有在加载webView后才能获得ContentSize。因此,在webviewDidFinishLoad中获取webview的内容大小。

CGFloat webViewHeight; 

-(void)webViewDidFinishLoad:(UIWebView *)webView{

   webViewHeight = webView.scrollView.contentSize.height;

}

然后将webview高度设置为webview contentize,如下所示

webView.frame = CGRectMake(webView.frame.origin.x,webView.frame.origin.y,webView.frame.size.width,webViewHeight);

然后使用

 UIGraphicsBeginImageContext(webview.frame.size);