ios tableView的行高計算

2021-08-08 19:54:35 字數 1236 閱讀 6809

如果我們設定了預估的行高也就是

tableview.estimatedrowheight = 200
以及實現了計算行高的方法

-(cgfloat)tableview:(uitableview *)tableview heightforrowatindexpath:(nsindexpath *)indexpath

這樣的話,當前顯示的行高會被呼叫2次的

如果我們沒有設定預估的行高,就會把多個cell的行高算三遍。然後再算進入螢幕範圍的cell的高度,就比如說我們螢幕顯示有四個cell

當第5個cell從螢幕外面出現的時候會去呼叫獲取行高的方法。

為什麼要呼叫這麼多次的計算行高的方法,

那是因為uitableview繼承自uiscrollview,所以需要去計算個contentsize

我們都知道如果scrollview沒有contentsize是滾動不了的,所以沒有預估行高的話就會多去呼叫計算行高的方法

如果我們設定了預估行高,如果設定的預估行高不同,計算幾個cell的行高的數量也就不同。

我們設定了預估行高,就會使用預估的行高去計算出預估的contentsize。

計算行高的次數就會根據我們設定的預估行高的值來決定。

如果我們設定的預估行高比較小的話,那就會算的次數多一點,會順序的去計算,然後再去更新contentsize。

就比如說我們這裡設定預估行高為10,計算行高的方法就去呼叫了60多次

self.tableview.estimatedrowheight=10;
如果預估的行高比較大的話,就會去計算當前顯示cell的行高方法

如果我們使用預估行高,每個cell顯示之前要去計算,相對於單個cell來說效率比較低,但是如果有多個cell的話效率是高的。

因為如果我們沒有使用預估行高的話,會一下子算出很多來,這樣的話我們就需要等待的時候比較長,而且使用者也不一定會去點到那麼多行。

設定了預估行高的話,行高,cell 和計算行數的執行順序分別是 行數 -> cell ->行高

如果沒有設定預估行高的話,就是行數 -> 行高 ->cell

如果行高是固定值,我們就不要去實現行高的**方法,因為行高的**方法會被呼叫很多次,而行高如果是固定的,就沒有必要去呼叫很多次,這樣會影響效能

ios tableView自動計算行高

最近通過學習了解到乙個東西就是tableview可以自動的計算行高了,只需要配合autolayout來使用就可以了 先設定如下所示的 先設定預估行高 tableview.estimatedrowheight 200 再設定自動計算行高 tableview.rowheight uitableviewa...

高度行IOS tableView常用屬性

上班之餘抽點時間出來寫寫博文,希望對新接觸的朋友有幫助。今天在這裡和大家一起學習一下高度行 tableview屬性 nsinteger numberofsectionsintableview uitableview tableview nsinteger tableview uitableview ...

CListCtrl行高的修改

網上修改clistctrl項高度的方法一般是擴大字型,及用將項高度撐大.這兩種方法雖然簡單,但是效果卻不是很理想.一種比較理想的方法是自畫clistctrl,不過方法相對來說比較複雜.要修改clistctrl的列表項高度,我們需要自己新增 measureitem 的訊息響應函式,對應的訊息是 wm ...