iOS 对当前webView进行截屏的方法
发布时间 - 2026-01-11 00:54:28 点击率:次UIWebView和WKWebView的截屏有所区别:

UIWebView:
func getImage(context: ServiceExecuteContext) -> UIImage {
//创建一个基于位图的图形上下文并指定大小
UIGraphicsBeginImageContextWithOptions(context.fromViewController.webView.bounds.size, true, 0)
//renderInContext呈现接受者及其子范围到指定的上下文
context.fromViewController.webView.layer.renderInContext(UIGraphicsGetCurrentContext()!)
//返回一个基于当前图形上下文的图片
let image = UIGraphicsGetImageFromCurrentImageContext()
//移除栈顶的基于当前位图的图形上下文
UIGraphicsEndImageContext()
//let imagRef = CGImageCreateWithImageInRect((image?.CGImage)!, context.fromViewController.webView.bounds)
//let newImage = UIImage.init(CGImage: imagRef!)
//UIImageWriteToSavedPhotosAlbum(newImage, nil, nil, nil);//保存图片到照片库
return image!
}
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的屏幕内容
func getImage(context: ServiceExecuteContext) -> UIImage {
UIGraphicsBeginImageContextWithOptions(context.fromViewController.webView.bounds.size, true, 0)
for subView: UIView in context.fromViewController.webView.subviews {
subView.drawViewHierarchyInRect(subView.bounds, afterScreenUpdates: true)
}
//UIApplication.sharedApplication().keyWindow?.layer.renderInContext(UIGraphicsGetCurrentContext()!)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
//let imagRef = CGImageCreateWithImageInRect((image?.CGImage)!, context.fromViewController.webView.bounds)
//let newImage = UIImage.init(CGImage: imagRef!)
return image!
}
以上这篇iOS 对当前webView进行截屏的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
# ios
# webview
# 截屏
# iOS开发中WebView的基本使用方法简介
# IOS中UIWebView加载Loading的实现方法
# IOS中的webView加载HTML
# 轻松理解iOS 11中webview的视口
# 详解iOS webview加载时序和缓存问题总结
# iOS Webview自适应实际内容高度的4种方法详解
# ios开发加载webview显示进度条实例
# iOS获取cell中webview的内容尺寸
# iOS去除Webview键盘顶部工具栏的方法
# 给大家
# 是一个
# 直接调用
# 当我
# 希望能
# 这篇
# 并不能
# 创建一个
# 小编
# 大家多多
# 移除
# 其子
# 就知道
# 我发现
# 但是在
# 结果是
# fromViewController
# UIGraphicsBeginImageContextWithOptions
# gt
# ServiceExecuteContext
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
怎么用AI帮你为初创公司进行市场定位分析?
南京网站制作费用,南京远驱官方网站?
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)
edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】
如何快速生成凡客建站的专业级图册?
Python自然语言搜索引擎项目教程_倒排索引查询优化案例
如何在阿里云购买域名并搭建网站?
Laravel事件监听器怎么写_Laravel Event和Listener使用教程
Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册
HTML 中动态设置元素 name 属性的正确语法详解
Bootstrap整体框架之CSS12栅格系统
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程
Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析
Mybatis 中的insertOrUpdate操作
如何在阿里云ECS服务器部署织梦CMS网站?
利用python获取某年中每个月的第一天和最后一天
奇安信“盘古石”团队突破 iOS 26.1 提权
Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理
Laravel如何使用Gate和Policy进行授权?(权限控制)
香港服务器租用每月最低只需15元?
如何快速搭建高效香港服务器网站?
如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?
ChatGPT回答中断怎么办 引导AI继续输出完整内容的方法
移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?
如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南
如何利用DOS批处理实现定时关机操作详解
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
iOS中将个别页面强制横屏其他页面竖屏
EditPlus中的正则表达式 实战(2)
Android利用动画实现背景逐渐变暗
Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程
详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点
,交易猫的商品怎么发布到网站上去?
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
实例解析Array和String方法
合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?
Laravel distinct去重查询_Laravel Eloquent去重方法
如何在建站主机中优化服务器配置?
东莞市网站制作公司有哪些,东莞找工作用什么网站好?
Laravel怎么使用Intervention Image库处理图片上传和缩放
今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】
轻松掌握MySQL函数中的last_insert_id()
如何在云服务器上快速搭建个人网站?
高防服务器租用指南:配置选择与快速部署攻略
谷歌Google入口永久地址_Google搜索引擎官网首页永久入口
java中使用zxing批量生成二维码立牌
Laravel如何与Pusher实现实时通信?(WebSocket示例)
Laravel安装步骤详细教程_Laravel环境搭建指南

