【问题标题】:Screenshot UIWebView’s full content in IBAction截图 UIWebView 在 IBAction 中的全部内容
【发布时间】:2014-01-04 17:11:59
【问题描述】:

您好,目前我在 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);

如何使屏幕截图中的所有内容可见?

【问题讨论】:

    标签: ios uiwebview uiimage screenshot layer


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      如果 webview 的 frame 等于 superview(screen) 那么 webview 不会渲染超出范围的内容。所以你必须将 webview 的框架设置为它的 contentSize 并截图。

      ContentSize 只有在 webView 加载后才能获取。所以在 webviewDidFinishLoad 中获取 webview 的 contentsize 的高度。

      CGFloat webViewHeight; 
      
      -(void)webViewDidFinishLoad:(UIWebView *)webView{
      
         webViewHeight = webView.scrollView.contentSize.height;
      
      }
      

      然后如下设置webview高度为webview contentsize

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

      然后使用

       UIGraphicsBeginImageContext(webview.frame.size);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多