IOS 非常流暢的滑動tableView

來源:互聯網
上載者:User

標籤:

為什麼要寫這篇文章呢?之前寫過一篇,因為手機打字不是很方便,還有之前同事用6splus 定下午茶時候,我滑動列表時候竟然誤以為是安卓系統的手機。?tableview 流暢度可以用fps來測試,到60幀說明你最佳化tableView 已經很有經驗了。如怎麼測試接下來從哪方面入手來最佳化呢?最佳化tableView主要有兩個思路。快取作業和非同步作業。?問題一:新人寫tableView ,在下面方法中頻繁的建立cell 上的子控制項並且添加到cell 上,這是一個要注意的地方,因為這樣頻繁的建立控制項和添加會增加CPU的消耗,間接掉幀。解決方案呢:在cell 裡面如下方法??把所有的控制項都建立好。通過隱藏來控制不同類型的cell顯示。如示意:?我再解釋下。我先按照把控制項都建立好了。如果沒有評論就隱藏掉如是隱藏的效果。這樣就不會把評論的高度計算到cell高度裡。如果圖片們沒有,那麼就不會把圖片算裡面,視頻分享連結就從朋友圈內容開始計算布局。以此類推。???問題二:tableView 高度問題。tableView 會頻繁的調用如下方法?來先確定它的contentSize及每個Cell的位置,然後再調用cellForRowAtIndexPath 來顯示。解決方案:在後台計算好高度以及布局,並緩衝到記憶體重複使用。後台計算cell 的高度然後放到集合裡面下次繼續使用。
問題三:有一些顯示的內容有富文本,特別是從HTML 轉化為屬性字串時候。解決方案,後台提前轉化需要的屬性字串,然後緩衝起來避免重複轉化帶來的CPU效能消耗。可以參考DTCoreText從HTML轉化屬性字串的思路,他就是GCD後台轉化的。
問題四:圖片圓角,陰影等操作,會引起離屏渲染。對CPU效能消耗。解決方案:用一個圖片蓋上,或者後台就把圖片繪製成圓角圖片顯示。
問題五:一些顯示很多圖片的地方,伺服器的圖片很大,不是你控制項的大小。解決方案:伺服器返回控制項寬高的圖片,比如七牛可以在圖片路徑拼接參數來擷取指定寬高。
問題六:視圖層次複雜情況下,CPU把它們混合會很消耗資源解決方案:如果不能避免,可以把你的視圖繪製成一張圖片來顯示,當然渲染的過程在後台。可以參考VVeboTableViewDemo的思路。
還有一些其他的技巧,比如不用SB 和Xib 來建立cell 用純程式碼來建立,拋棄自動布局用座標來計算布局。雖然會犧牲很多時間
總之:把一些影響CPU的操作放到後台來操作,然後緩衝一切可以緩衝的東西。?

IOS 非常流暢的滑動tableView

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.