天天看點

使用了Autolayout的UITableViewCell動态布局和高度動态改變自适應

學習的原文:http://blog.163.com/china_uv/blog/static/1171372672014111681232340/

首先我使用了xib來自定義cell,并且給cell添加好了限制

使用了Autolayout的UITableViewCell動态布局和高度動态改變自适應

此處要注意,所有控件必須添加到ContentView上

使用了Autolayout的UITableViewCell動态布局和高度動态改變自适應

一定要使cell上的子視圖的邊緣固定到ContentView上面,特别是頂部和底部的邊距限制,參考下圖

使用了Autolayout的UITableViewCell動态布局和高度動态改變自适應

如果是用代碼設定的限制,那要到cell的

updateConstraints

方法裡面來設定,如果有多個cell的樣式不一樣,還需要單獨設定其不同的辨別符,詳情參考原文,此處不多說

下面是iOS8以上的自适應方法:

iOS8 - Self-Sizing Cells

使用了Autolayout的UITableViewCell動态布局和高度動态改變自适應

rowHeight

這個屬性需設定為

UITableViewAutomaticDimension

estimatedRowHeight

隻要設定為非0值即可開啟行高估算,一般設定為接近平均行高的值。這樣做是為tableView上還沒有顯示在螢幕上的cell提供了一個臨時的估算的行高。然後,當cell即将滾入螢幕範圍内的時候,會計算出實際的高度。

一般來說,行高估算值不需要太精确——它隻是被用來修正tableView中滾動條的大小的,當你在螢幕上滑動cell的時候,即便估算值不準确,tableView還是能很好地調節滾動條。

完成以上步驟即可實作cell的高度自适應。

如果沒有寫

estimatedRowHeight

屬性,或者行高比較極端,滾動條出現明顯的跳躍時,也可使用這個方法即來設定cell高度的估算(return處随意寫個數字即可,跟它的屬性用法一樣)

使用了Autolayout的UITableViewCell動态布局和高度動态改變自适應

注意不是這個方法

使用了Autolayout的UITableViewCell動态布局和高度動态改變自适應

下面是iOS8之前也能用的自适應方法:

首先這個label我沒有設定高度的限制

使用了Autolayout的UITableViewCell動态布局和高度動态改變自适應

然後把label上的文字傳入此方法,獲得label的高度

使用了Autolayout的UITableViewCell動态布局和高度動态改變自适應

有圖檔的話在傳回的高度處加上圖檔的高度即可。

imageView也可以用 sizeToFit 方法來自适應圖檔的大小