UITableVIew 滾動流暢性最佳化,uitableview滾動

來源:互聯網
上載者:User

UITableVIew 滾動流暢性最佳化,uitableview滾動
影響UITableViewUITableView滾動的流暢性原因:

 

1、 在代理方法中做了過多的計算佔用了 UI 線程的時間

2、同上

3、Cell 中 view 的組織複雜,比如使用layer並不會有太大影響,但是如果layer使用了透明,或者圓角、變形等效果,就會影響到繪製速度。

 

關於第一點,首先要明白 tableview 的代理(這裡指 datasource 和 delegate 的那套方法,下同)方法的調用順序,和時機。對於一般的應用會有如下順序:

1、向代理要 number Of Rows。

2、對於每行向代理要 height For Row At Index Path。

3、向代理要 當前螢幕可見的 cell For Row At Index Path 。(實測顯示4寸屏的手機會取 螢幕顯示數量+2,3.5寸屏同4寸屏數量,雖然3.5寸屏可顯示的cell 數量要小於 4寸屏!)

4、然後 cell 就顯示出來了。

tableView:heightForRowAtIndexPath:

很多人都把最佳化的重點放到了 cell for row at indexpath 那個方法裡了,在這裡儘可能的少計算,但是卻忽略了另一個很輕鬆就能提升載入時間的方法 :

 

對於高度的計算,還有個小細節需要注意,就是如果 row 的高度都一定,那就刪除代理中的這個 tableView:heightForRowAtIndexPath: 方法,設定 Table View 的 rowHeight 屬性,相似的 numberOfRowsInSection: 系列的方法,我就不都寫出來了。蘋果的文檔裡介紹這樣也可以減少了調用時間。

 

在建立tableView方法時將行高設定 Table View 的 rowHeight 屬性

//設定tableView的行高為50,不要再寫代理方法  如果高度不一樣另外計算,這個方法只限行高一樣的時候使用

self.tableView.rowHeight=50;

 

聯繫我們

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