- 8
- 0
- 约2.1千字
- 约 3页
- 2025-06-09 发布于四川
- 举报
第
iOS开发中UIWebView和WKWebView截屏介绍
funcgetImage(context:ServiceExecuteContext)-UIImage{
//创建一个基于位图的图形上下文并指定大小
UIGraphicsBeginImageContextWithOptions(context.fromViewController.webView.bounds.size,true,0)
//renderInContext呈现接受者及其子范围到指定的上下文
context.fromViewController.webView.layer.renderInContext(UIGraphicsGetCurrentContext()!)
//返回一个基于当前图形上下文的图片
letimage=UIGraphicsGetImageFromCurrentImageContext()
//移除栈顶的基于当前位图的图形上下文
UIGraphicsEndImageContext()
//letimagRef=CGImageCreateWithImageInRect((image.CGImage)!,context.fromViewController.webView.bounds)
//letnewImage=UIImage.init(CGImage:imagRef!)
//UIImageWriteToSavedPhotosAlbum(newImage,nil,nil,nil);//保存图片到照片库
returnimage!
UIGraphicsBeginImageContext()方法传入唯一参数,是一个CGSize变量,用来指定图形context的大小,所以获取屏幕截图的时候这个size该是屏幕的大小。其实了解了这个过程,就知道这个方法可以获取任意区域的截图,当然是必须当前页面的一部分。你需要截取哪个view的图像,就让这个view的layer调用renderInContext把图形渲染进当前图形context。
WKWebView:
当我尝试去截取WKWebView的图。截图的结果返回给我的就仅仅只是一张背景图,显然截图失败。通过搜索StackOverflow和Google,我发现WKWebView并不能简单的使用layer.renderInContext的方法去绘制图形。如果直接调用layer.renderInContext需要获取对应的Context,但是在WKWebView中执行UIGraphicsGetCurrentContext()的返回结果是nil
StackOverflow提供了一种解决思路是使用UIView的drawViewHierarchyInRect方法去截取屏幕视图。通过直接调用WKWebView的drawViewHierarchyInRect方法(afterScreenUpdates参数必须为true),可以成功的截取WKWebView的屏幕内容
funcgetImage(context:ServiceExecuteContext)-UIImage{
UIGraphicsBeginImageContextWithOptions(context.fromViewController.webView.bounds.size,true,0)
forsubView:UIViewincontext.fromViewController.webView.subviews{
subView.drawViewHierarchyInRect(subView.bounds,afterScreenUpdates:true)
//UIApplication.sharedApplication().keyWindow.layer.renderInContext(UIGraphicsGetCurrentContext()!)
letimage=UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
//letimagRef=CGImageCreateWithImageInRect((image.CGImage)!,context.fromViewController.webView.bounds)
//letnewImage=UIImage.init
您可能关注的文档
最近下载
- Siemens西门子家电iQ300 冷凝式干衣机 8 kg WT46G4000W 使用 安装指南_3.pdf
- 2025年福建省漳州【中考数学】试卷(原卷+答案).pdf
- 机房空调安装与调试操作规范.doc VIP
- 2025心肺复苏指南课件(2025-AHA心肺复苏CPR和心血管急救指南-欧洲复苏委员会).pptx VIP
- 南京高三二模数学试卷及答案.docx VIP
- 《教育学原理(第二版)》PPT完整全套教学课件.pptx
- 美容院运营管理日常流程手册.docx VIP
- 杜仲的可行性报告.pdf VIP
- 新疆天润乳业营运能力分析.doc VIP
- 2026版创新设计高考总复习语文部编版学生用-学案23 《屈原列传》.docx VIP
原创力文档

文档评论(0)