iOS-UITableviewCell的cell自適應高度的優選方法


在最開始開發的時候,大家都知道UITableView有一個獲取cell高度的代理方法,可以從這個方法當中設置Cell的高度,即:

那么自然而然的就可以想到這種辦法來設置高度:定義一個全局的Cell,在圖2的方法上給cell賦值,讓評論的Label執行sizeToFit,重新計算Cell的高度,然后返回Cell的高度。

但是這種方法不建議使用,它存在幾個缺點:

1.效率不高,給cell賦了2次值。

2.如果cell是不固定的,那么更改起來比較繁瑣。

3.邏輯有點混亂。

那么有沒有一種簡單有效並且十分優雅的方式來實現Cell的自適應高度呢?當然有。

步驟一:設置tableview的高度為自動填充高度模式

             UITableView *table=[[UITableView alloc]initWithFrame:CGRectZero style:UITableViewStylePlain];

        table.rowHeight=UITableViewAutomaticDimension;

    解釋:如此設置之后,就不用寫cell高度的代理方法來設置高度了。(注:默認值就是UITableViewAutomaticDimension)。

步驟二:設置table.estimatedRowHeight = 100。

    解釋:設置一個預估的行高,為了代碼的易讀性,還是盡量要設置一個跟cell的高差不多的值。

做了上面的步驟之后,剩下的就是繪制Cell了,這里就涉及到一個思想:根據內容自動撐開。

步驟三:

步驟四:

     解釋:根據步驟三和步驟四的代碼,作出下面注釋:UITableViewCell上有一個contentView,contentView上面放置了所有的控件。而這里的最頂部的控件avatarButton(頭像按鈕)頭部頂着contentView的頭部,contentLabel(評論label)頭部頂着avatarButton(頭像按鈕)的底部,同時contentLabel(評論label)底部有頂着contentView的底部,為此就實現了avatarButton與contentLabel共同將contentView給撐開了,也就把cell給撐開了。

那么會有人問:那contentLabel的高度怎么出來?其實從圖4可以看到我根本是沒有設置contentLabel的height,原因就是contentLabel的text就決定了contentLabel的高度,內容的多少會自動將contentLabel的高度撐開。

這就是上面提到的根據內容自動撐開的思想。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM