使用UIWebView截取整个网页
使用UIWebView截取整个网页
久伴旧伴 发表于5个月前
使用UIWebView截取整个网页
  • 发表于 5个月前
  • 阅读 0
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

从业务需要说起,需要把整个webview里面渲染的页面 截图存成一张图片。上传服务器。

首先页面要加载完成。应该在webViewDidFinishLoad 进行截图的操作。

 

方法如下:

 

    //1.开启位图上下文.

    UIGraphicsBeginImageContextWithOptions(self.webView.bounds.size,NO,0);

   

    //2.把控制器webView的内容绘制到上下文当中.layer是不能够直接绘制的.要用渲染的方法才能够让它绘制到上下文当中.

   

    CGContextRef ctx =UIGraphicsGetCurrentContext();

   

    [self.view.layer renderInContext:ctx];

   

    //3.生成一张图片

   

    UIImage *newImage =UIGraphicsGetImageFromCurrentImageContext();

   

    //4.关闭上下文

   

    UIGraphicsEndImageContext();

   

    //5.1图片转成二进制流存入data

   

    NSData*data =UIImagePNGRepresentation(newImage);

   

    [data writeToFile:@"/Users/yx/Desktop/newImage.png"atomically:YES];

   

    //5.2图片存入NSDocument

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);

   

    NSString *filePath = [[paths objectAtIndex:0] stringByAppendingPathComponent:[NSString stringWithFormat:@"newImage.png"]]; 

 

【这样操作有一个问题,上下文开启的时候有一个参数size。如果只是手机屏幕的大小,那么webview里面 只能截取一屏的内容。】

 

为了截全貌,只需要把它全部展示出来,即把UIWebView.size变成UIWebView.scrollview.contentSize,完成截图操作后,见【代码1】

再把UIWebView.scrollview.contentOffset设置为(0,0)、把UIWebView.size还原 保证可以正常的滑动。见【代码2】

 

【代码1】:

    //把webview的frame改变成内容的大小 

   

    self.webView.frame = CGRectMake(0, 0, kScreenWidth, self.webView.scrollView.contentSize.height);

 

【代码2】:

    //把webview的frame还原 并改变它的contentOffset为(0, 0)

 

    self.webView.frame = CGRectMake(0, 0, kScreenWidth, kScreenHeight);

    

    _webView.scrollView.contentOffset = CGPointMake(0, 0);

标签: web-view、截图
共有 人打赏支持
粉丝 5
博文 19
码字总数 6522
×
久伴旧伴
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: