tableviewcell的自适应高度一般是根据里面label的长度高度自适应。下面介绍两个最简单的方法
1.在使用xib和纯代码结合的时候,可能会遇到就是cell的自定义时,可能就会有遇到在同一个UITableView中可能有两种状态共存的情况,而且cell的高度有固定高度,也存在根据label字数自适应高度的时候就需要分开判断了。
苹果有一个自带的属性设置就是
self.tableView.rowheight = UITableViewAutomaticDimension;//设置cell的高度为自动计算,只有才xib或者storyboard上自定义的cell才会生效,而且需要设置好约束
self.tableView.estimatedRowHeight = 240;//必须设置好预估值 self.tableView.rowheight = UITableViewAutomaticDimension;//设置cell的高度为自动计算,只有才xib或者storyboard上自定义的cell才会生效,而且需要设置好约束
这两段代码可以写在viewdidload里,但是写在这会发生一个问题。就是继续使用UITableViewDataSource里的
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {}
这个方法后上述的方法就会失效
所以我会将 self.tableView.rowheight 以及 self.tableView.estimatedRowHeight这两个属性写在UITableViewDataSource的代理方法里
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.row == 0) {
return 60;
}
self.articleTableView.rowHeight = UITableViewAutomaticDimension;
self.articleTableView.estimatedRowHeight = 240;
return self.articleTableView.rowHeight;
}
2.在 -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { }
//这个是label里面放的字符串
NSString *str = [NSString stringWithFormat:@"%@|%@",_sourceBuyingMoreDataDict[@"data"][@"belongUserName"],_sourceBuyingMoreDataDict[@"data"][@"belongDept"]];
//写上label的宽度跟字号 然后计算label的高度
CGFloat textHeight = [StringSize getHeight:str Size:CGSizeMake(DeviceWidth - 105, CGFLOAT_MAX) Font:14];
return textHeight + 21;
这样就实现tableviewcell的高度的自适应了。