學習的原文:http://blog.163.com/china_uv/blog/static/1171372672014111681232340/
首先我使用了xib來自定義cell,并且給cell添加好了限制
此處要注意,所有控件必須添加到ContentView上
一定要使cell上的子視圖的邊緣固定到ContentView上面,特别是頂部和底部的邊距限制,參考下圖
如果是用代碼設定的限制,那要到cell的
updateConstraints
方法裡面來設定,如果有多個cell的樣式不一樣,還需要單獨設定其不同的辨別符,詳情參考原文,此處不多說
下面是iOS8以上的自适應方法:
iOS8 - Self-Sizing Cells
rowHeight
這個屬性需設定為
UITableViewAutomaticDimension
estimatedRowHeight
隻要設定為非0值即可開啟行高估算,一般設定為接近平均行高的值。這樣做是為tableView上還沒有顯示在螢幕上的cell提供了一個臨時的估算的行高。然後,當cell即将滾入螢幕範圍内的時候,會計算出實際的高度。
一般來說,行高估算值不需要太精确——它隻是被用來修正tableView中滾動條的大小的,當你在螢幕上滑動cell的時候,即便估算值不準确,tableView還是能很好地調節滾動條。
完成以上步驟即可實作cell的高度自适應。
如果沒有寫
estimatedRowHeight
屬性,或者行高比較極端,滾動條出現明顯的跳躍時,也可使用這個方法即來設定cell高度的估算(return處随意寫個數字即可,跟它的屬性用法一樣)
注意不是這個方法
下面是iOS8之前也能用的自适應方法:
首先這個label我沒有設定高度的限制
然後把label上的文字傳入此方法,獲得label的高度
有圖檔的話在傳回的高度處加上圖檔的高度即可。
imageView也可以用 sizeToFit 方法來自适應圖檔的大小