真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

iOS使用WebView生成長截圖的第3種解決方案-創(chuàng)新互聯(lián)

前言

站在用戶的角度思考問題,與客戶深入溝通,找到都蘭網(wǎng)站設(shè)計與都蘭網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:網(wǎng)站制作、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋都蘭地區(qū)。

WebView就是一個內(nèi)嵌瀏覽器控件,在iOS中主要有兩種WebView:UIWebView和WKWebView,UIWebView是iOS2之后開始使用,WKWebView是在iOS8開始使用,WKWebView將逐步取代笨重的UIWebView。

由于項目需要,新近實現(xiàn)了一個長截圖庫 SnapshotKit。其中,需要支持 UIWebView、WKWebView 組件生成長截圖。為了實現(xiàn)這個特性,查閱了很多資料,同時也做了不同的新奇思路嘗試,最終實現(xiàn)了一個新的、取巧的技術(shù)方案。

以下主要總結(jié)了在“WebView生成長截圖”需求方面,“網(wǎng)上已有方案”和“我的全新方案”的各自實現(xiàn)要點(diǎn)和優(yōu)缺點(diǎn)。

WebView生成長截圖的已有方案

根據(jù) Google 所搜索到的資料,目前iOS WebView生成長截圖的方案主要有2種:

  • 方案一:修改Frame,截圖組件
  • 方案二:分頁截圖組件內(nèi)容,合成長圖

下面將會簡述方案一和方案二的具體實現(xiàn)。

方案一:修改Frame,截圖組件

方案一的實現(xiàn)要點(diǎn)在于:修改 webView.scrollView 的 frameSize  為 contentSize,然后對整個 webView.scrollView 進(jìn)行截圖。

不過,這個方案只適用 UIWebView 組件,因為其是一次性加載網(wǎng)頁所有的內(nèi)容。而 WKWebView 組件,為了節(jié)省內(nèi)存,加載網(wǎng)頁內(nèi)容時,只加載可視部分——這一點(diǎn)類似 UITableView 組件。在修改webView.scrollView 的 frameSize 后,立即執(zhí)行了截圖操作, 這時候,WKWebView由于還沒把網(wǎng)頁的內(nèi)容加載出來,導(dǎo)致生成的長截圖是空白的。

方案一核心代碼如下:

extension UIScrollView {
 public func takeSnapshotOfFullContent() -> UIImage? {
  let originalFrame = self.frame
  let originalOffset = self.contentOffset

  self.frame = CGRect.init(origin: originalFrame.origin, size: self.contentSize)
  self.contentOffset = .zero

  let backgroundColor = self.backgroundColor ?? UIColor.white

  UIGraphicsBeginImageContextWithOptions(self.bounds.size, true, 0)

  guard let context = UIGraphicsGetCurrentContext() else {
   return nil
  }
  context.setFillColor(backgroundColor.cgColor)
  context.setStrokeColor(backgroundColor.cgColor)

  self.drawHierarchy(in: self.bounds, afterScreenUpdates: true)
  let image = UIGraphicsGetImageFromCurrentImageContext()
  UIGraphicsEndImageContext()

  self.frame = originalFrame
  self.contentOffset = originalOffset

  return image
 }
}

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站www.cdcxhl.com,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


新聞名稱:iOS使用WebView生成長截圖的第3種解決方案-創(chuàng)新互聯(lián)
URL鏈接:http://weahome.cn/article/ggpss.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部