cell高度自適應實現的最簡單方式

2021-08-17 18:08:47 字數 1209 閱讀 2220

曾經為了實現cell的高度自適應,不知道吃了多少苦。那個時候,是在我的資料模型model中新增乙個height屬性,實現它的get方法,在get方法中計算需要多行顯示文字的高度,然後再加上其他亂七八糟的高度並返回,然後在tableview的 

- (cgfloat)tableview:(uitableview )tableview heightforrowatindexpath:(nsindexpath )indexpath中獲取到每行對應的model,取出其中的model.height屬性的值返回,還要在cell中確定cell中label的高度。。。總之就是很麻煩,而且還不一定總能算的很正確,甚是受此困擾。

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

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

:必須重寫estimatedheightforrowatindexpath方法 

這個方法是ios7.0之後才出現的,如果不重寫此方法,僅重寫heightforrowatindexpath,那麼大家會發現,cell並不會根據label的內容,自適應高度。因為系統是先獲取cell的高度,再獲取cell的view。也就是先呼叫heightforrowatindexpath,再呼叫cellforrowatindexpath。在cellforrowatindexpath被呼叫之前,你的label是沒有被設定文字內容的,因此它獲取到的高度,並不是你想要的。那麼我們必須想辦法讓系統在獲取了cell之後,再獲取cell的高度。方法就是,重寫estimatedheightforrowatindexpath,顧名思義,它會返回乙個估計高度,有了這個方法後,tableview會先呼叫它獲取估計高度,然後獲取cell,最後獲取真實高度。estimatedheightforrowatindexpath的返回值可以隨意,返回多少都可以,只是給tableview乙個安慰而已,讓它延遲獲取真實的高度。 

關鍵點2

:真實高度返回值為 

uitableviewautomaticdimension 

關鍵點3

:cell中的元素,必須相對於cell的頂部和底部布局,這樣在元素中的內容動態變化的時候,才能撐開cell

cell自適應高度

在自定義layoutsubviews中設定自定義cell的位置和大小 iamgeview super layoutsubviews 讓imgview尺寸和cell大小相同 cgfloat height self.contentview bounds size width self.imgview i...

cell自適應高度

計算高度 計算高度 此方法需要在.h中宣告 cgfloat calculateheightwith student student 計算textfiled高度 計算hobby的高度 cgfloat hobbylabelheight student student context nil option...

cell高度自適應

在做專案的時候我們往往會遇到cell高度自適應的問題,樓主以前也寫過,但是由於時間問題和記憶問題將之跑到九霄雲外了,於是上網查閱資料但是發現網上資料幾乎是千篇一律的又長又臭,簡直難以看下去,於是決定寫上重要方法已做記錄,下面上 我們只需要在 cgfloat tableview uitableview...