在iOS开发中,tableView几乎无处不在,下面针对其中的一种布局结构做个小结:
如图所示:我把图中的这种结构归纳为“上下结构”,即上面是tableHeaderView,下面是tableView。
利用这种布局时,如果tableHeaderView的高度不是固定的,而是由model赋值决定其高度的话,那么我们可以单独创建一个xib文件作为tableHeaderView,然后在给tableHeaderView赋值完成后自动返回其高度,并添加到tableView上即可。
如:我定义了一个名为"ServiceMoreDetailedView"的xib文件作为tableHeaderView,然后在为其赋值的时候,让其自动返回高度,此时既能够为xib文件赋值,又能够自动返回其高度,可以达到一举两得的目的。
//1.创建tableHeaderView,并让其成为tableView的头视图
moreDetailedView =[[[NSBundlemainBundle] loadNibNamed:@"ServiceMoreDetailedView" owner:self options:nil] firstObject];
moreDetailedView.frame=CGRectMake(0,0,WIDTH,[moreDetailedView signDataWithModel:self.imageTextDto]);//赋值的同时,自动返回其高度
self.tableView.tableHeaderView=moreDetailedView;
//2.在ServiceMoreDetailedView内部定义好赋值方法
-(CGFloat)signDataWithModel:(ImageTextAppointmentDto *)imageTextDto{
//具体赋值代码,给“ServiceMoreDetailedView”中的子视图进行赋值。
return CGRectGetMaxY(imgView.frame); //返回赋值完成后的“ServiceMoreDetailedView”最大Y值。
}