UITableVIew 滾動流暢性優化

2022-07-28 05:18:11 字數 937 閱讀 7468

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;

UITableView滾動效能優化

影響 uitableview 滾動的流暢性的原因 1 在 方法中做了過多的計算占用了 ui 執行緒的時間 2 cell裡的吃gpu 在tableview cellforrowatindexpath 中 3 cell 中 view 的組織複雜 關於第一點,首先要明白 tableview 的 這裡指 d...

UITableView獲取滾動的偏移

uitableview獲取滾動的偏移 nslog tableview滾動縱座標 f cardtableview.contentoffset.y 鍵盤擋住了要輸入的view時候,改變view的縱座標使其適應輸入 將鍵盤推出時候,view重新回到原來位置 nstimeinterval animation...

iOS 判斷UITableView是否滾動在最底部

ios 根據判斷uitableview或者uiscrollview是否滾動在最底部,然後對接收到的資訊進行處理,判斷新訊息來的時候是否滾動,提公升使用者體驗。objc view plain copy void scrollviewdidscroll uiscrollview scrollview e...