iOS tableviewcell 自适应高度

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的高度的自适应了。

你可能感兴趣的:(iOS tableviewcell 自适应高度)