ios web互動收錄:高度擷取,iosweb收錄擷取

來源:互聯網
上載者:User

ios web互動收錄:高度擷取,iosweb收錄擷取
ios web互動收錄:高度擷取,關於WebView內容高度的擷取,相信很多人都踩過坑,無法擷取到準確高度,導致頁面配置出現差錯,搜到的資料很多但都無法解決問題,以下是個人經驗總結:項目需求實現H5文章&原生評論效果,文章是載入H5連結,評論資訊是後台介面提供,以列表形式展示。實現思路:

1. webView載入H5連結,設定它為tableView的 headerView,下方評論資訊用Cell載入展示。

2. 在webView的回調方法webViewDidFinishLoad中擷取網頁內容高度,設定為webView的高度,重新將webView賦給tableView的headerView。

Tip: 將一個View賦值給UITableView的tableHeaderView時,不需要手動設定高度,HeaderView會自動使用View的高度。

像上面這樣,類似的方法很多,無論是JS擷取,還是contentSize擷取,最後結果都難以擷取到準確高度,並非方法不行,而是:

webViewDidFinishLoad代理方法被調用時,頁面並不一定完全展現完成,可能有圖片還未載入出來,導致此時擷取的高度是並不是最終高度,過會兒圖片載入出來後,瀏覽器會重新排版,而我們在這之前給了一個錯誤高度,導致顯示異常。

問題原因已確定,解決思考:

如何能在webViewDidFinishLoad之後擷取到網頁內容高度的變化?

答案:監聽

具體實現過程:

給webView的scrollView的contentSize屬性添加監聽,每當內容發生變化,contentSize一定會跟著變,捕獲這個變動,在監聽方法中實現webViewDidFinishLoad中的代碼,也就是擷取最新的內容高度賦給webView

另外,在cell中使用webView擷取高度不準確的解決辦法跟上面一樣,只不過需要注意cell中使用webView涉及到cell重用,會導致滑動列表時webView多次載入,影響效能,建議緩衝高度。

注意:

如果不走監聽,要先懷疑自己,不要懷疑我!

1. 確保webview已經加在頁面上了,並且能夠正常顯示,然後再繼續擷取內容高度,如果都顯示不了,別來找我!

2. 是給webview的scrollview添加監聽,不要加在webview上,否則累死你也不會走監聽方法!

3. 如果你用的是swift,那請先學習相關資料。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.