? iOS8.0之前,我們要做到自適應,需要拿到cell的數據模型model, 經過一系列計算得到cell的高度, 非常的麻煩.? iOS8.0之后, 我們想做高度自適應就非常的簡單方便了. 我們只需要做好約束然后設置tableView.rowHeight = UITableViewAutomaticDimension即可,計算cell高度的任務就交給系統去處理吧,heightForRowAtIndexPath:這個代理方法都可以不用寫了,為了提升第一次加載的速度, 我們可以設置一個預估高度例如tableView.estimatedRowHeight = 100 這個數值理論上講是可以隨意的,但是越接近實際高度越好. 記住一定要自上而下的做好約束,告訴cell應該怎樣去擴展,下面我們就來體驗一下.
? 我們們大致的布局是這樣的:
下面我們就來為cell子控件設置一下約束 -? 接下來我們定義的kSpacing就為間距8
圖片:(1) 距離cell左邊的距離都是8? (2)圖片寬高都為80 (3)centerY和cell相等 (4)為了防止cell高度過小遮蓋圖片,設置圖片底部與cell底部距離大于等于0.?
標題:(1)左邊距離圖片最右側距離為8 (2)頂部和圖片頂部相等. (3)標題最右邊距離cell最右邊為8.
內容:(1)頂部距離標題底部距離為8 (2)左邊和標題左邊相等. (3)右邊和標題右邊相等 (4)告訴cell,底部和cell底部的距離至少大于0(為了美觀,我們設置為8,保留一些距離哈).
約束設置完畢之后, 配置我們的tableView.rowHeight = UITableViewAutomaticDimension, _tableView.estimatedRowHeight = 100,把heightForRow方法刪掉,拿到數據給cell綁定數值,這里不做詳細介紹,運然后行我們的程序吧.
OK了,完成自適應了,沒有一行計算cell高度的代碼,只需要做好AutoLayout一切自動解決,是不是非常的爽.