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

在最開始開發的時候,你們都知道UITableView有一個獲取cell高度的代理方法,能夠從這個方法當中設置Cell的高度,即:spa

那麼天然而然的就能夠想到這種辦法來設置高度:定義一個全局的Cell,在圖2的方法上給cell賦值,讓評論的Label執行sizeToFit,從新計算Cell的高度,而後返回Cell的高度。代理

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

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

2.若是cell是不固定的,那麼更改起來比較繁瑣。it

3.邏輯有點混亂。io

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

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

             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的高度撐開。

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

相關文章
相關標籤/搜索