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一切自动解决,是不是非常的爽.
网友评论