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

首頁 > 系統 > iOS > 正文

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

2019-10-21 18:46:44
字體:
來源:轉載
供稿:網友

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

 

注:相關教程知識閱讀請移步到IOS開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 甘谷县| 探索| 建阳市| 龙泉市| 昆明市| 吕梁市| 云和县| 同江市| 绥棱县| 泉州市| 三原县| 泸水县| 桂林市| 双流县| 平乐县| 南丹县| 宜章县| 英德市| 曲靖市| 德江县| 锦屏县| 孟津县| 华宁县| 遂川县| 吐鲁番市| 花莲县| 揭西县| 满洲里市| 黎平县| 榆中县| 新绛县| 遂昌县| 夏津县| 邛崃市| 墨玉县| 鄂尔多斯市| 孟津县| 永宁县| 彭泽县| 商城县| 桦川县|