国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

iOS 對當前webView進行截屏的方法

2020-07-26 02:49:57
字體:
來源:轉載
供稿:網友

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進行截屏的方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南开区| 建德市| 桂阳县| 荥阳市| 赫章县| 宁远县| 宣武区| 南皮县| 军事| 黄山市| 通海县| 揭阳市| 民丰县| 德化县| 辉县市| 乌鲁木齐县| 东丽区| 镇康县| 元谋县| 应城市| 新乡市| 抚顺市| 忻城县| 梁山县| 汉沽区| 苍南县| 汉中市| 宿迁市| 衡东县| 大厂| 兰西县| 犍为县| 泾源县| 崇文区| 三原县| 黎城县| 邢台市| 南投县| 自治县| 布尔津县| 灵丘县|