UItableViewCell自適應高度的坑

2022-04-12 04:24:39 字數 766 閱讀 3614

誤區1:使用 : [self layoutsubviews];來提前更新控制項frame,事實上這個並不能每次都能更新frame.

正確的做法是:

[self setneedslayout]; //設定標誌

[self layoutifneeded]; //執行更新

誤區2:ios8以後位於cell中label自使用高度並不一定要設定高度,這是因為ios可以根據cell的寬度以及你設定的約束來確定label寬度,從而自適應高度,但是我今天我發現我錯了。事實上它是根據tableview的寬度來計算label寬度的。

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

cell.ordertype =self.type;

cell.model =self.listdata[indexpath.section];

return

cell.suggestionheight;

}

如上面所述,這個cell最終並不會被新增至tableview中,我只是通過它來計算cell高度,然後我發現效果並不理想,有時候正確有時候錯誤這迷惑了我(注:計算出來的高度,總是和實際高度存在誤差)。經歷各種嘗試後靈機一動換成5s模擬器,發現完全正確這時候我明白了系統是320寬度進行計算的,而實際的cell寬度確實375於是就可能會存在誤差。明白這點後,我把cell中的label約束都改為width約束,結果如償所預願。

計算UITableViewCell高度

uitableview是先執行 cgfloat tableview uitableview tableview heightforrowatindexpath nsindexpath indexpath函式計算整個uitableview內容高度,然後才執行 uitableviewcell table...

UITableViewCell重用問題

在寫sina 微博介面的過程中使用到了cell,那麼就是在cell上新增一些控制項,但是由於每條微博的內容都是不同的,所以在顯示的過程中,出現了內容重疊的問題,其實就是uitableviewcell重用機制的問題。cpp view plain copy uitableviewcell tablevi...

UITableViewCell重用機制

uitableview是ios開發中使用頻率非常高的乙個控制項,它常被用來展示資訊列表,儘管資訊資料可能非常多,但uitableview消耗的資源卻並不會隨著展示資訊的增多而變大,這都要得益於uitableviewcell的重用機制,重用機制 顧名思義,就是反覆利用資源的機制。以下通過一些 來看下通...