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);
如何在屏幕截图中显示所有内容?
答案 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);