该demo主要实现的功能:当tableView的内容少时,tableView自适应内容,高度变小,窗口自适应tableView,同样高度变小。当tableView的内容多时,tableView自适应内容,高度变大,窗口自适应tableView,同样高度变大
一、tableView自适应内容高度,采用的方法是:计算tableView有多少行,乘以每一行的高度,算出tableView要完全自适应这些内容应该具备的高度,将算出来的这个高赋值给嵌入了tableView的scrollView
二、窗口自适应tableView高度,采用的方法是:
1、用auto layout对嵌入tableView的scrollView与上下控件之间的垂直间隔进行约束。
2、同时也对scrollView的高度添加约束条件,如下图所示。
3、在内容变化时,算出scrollView要适应这些内容应该具备的高度,通过代码改变scrollView高的约束条件,这时候窗口就会自适应tableView高度。关键代码如下所示:
self.scrollViewHeightConstraint.constant = (kTableRowHeight + 2) * self.tableContents.count ;
注:
因为tableView是嵌入到scrollView的,所以窗口自适应tableView高度的问题转化成窗口自适应scrollView的问题。
如果采用纯代码的方法来绘制窗口与控件,会比较复杂。而用auto layout非常简单地就可以实现自适应高度的效果,在这个例子中甚至都不用修改窗口的frame就可以让窗口自适应tableView的高度。
auto layout只支持10.7及以上系统
源代码地址: