先来一个效果图看看,如下,
接下来,咱们看怎么实现的。
一、原理图
二、在图1
自定义cell中,控件3
为自动改变高度的部分,如果是通过frame
手动计算布局时,H3 = (cell的高度 - H1 - H3)
;如果是通过Masonry
来布局,可以将控件3
设置为
make.top.equalTo(控件1).with.offset(H1);
make.bottom.equalTo控件2).with.offset(-H2);
三、接下来,是很重要的一步,我们可以设置tableView
的estimatedRowHeight
属性值或者在- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath;
代理方法中给cell
的高度设置一个估算的值
。
说明:如果控件3是Label,还要将它的numberOfLines属性值设置为0
第四、如果是系统的cell
,只是想实现cell高度
随文本高度改变,可以将它的textLabel
或者detailTextLabel
的numberOfLines
设置为0
,然后再给它设置一个预估计的值
就可以了。
一切大功告成,各位可以试一下。大神可以忽略这个。不足的地方,还请各位多多指教。