最近看了网上很多关于cell自适应高度的文章,都没说到点上,有点还很繁琐,现在提供一个非常方便清晰的思路给大家参考:
第一步.设置tableView.estimatedRowHeight ,这里的值是表示 cell自动适应的最大高度.
第二步.在UITableViewCell 中做手脚。具体整么做呢,
一定要用的自动布局,现在主流的用 Masonry,但是我用的是:UIView+AutoLayout,反正都可以实现自动布局。
-(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString*)reuseIdentifier
{
self= [superinitWithStyle:stylereuseIdentifier:reuseIdentifier];
if(self){
self.selectionStyle = UITableViewCellSelectionStyleNone;
UIImageView*headImageView = [[UIImageViewalloc]init];
self.headImageView= headImageView;
[self.contentViewaddSubview:headImageView];
[headImageViewautoPinEdgeToSuperviewEdge:ALEdgeLeft withInset:REPAIR_LEFT_MARGIN];
[headImageViewautoPinEdgeToSuperviewEdge:ALEdgeTop withInset:REPAIR_TOP_MARGIN];
//这个地方的高度一定要设置固定
[headImageViewautoSetDimensionsToSize:CGSizeMake(25,25)];
VIEW_CORNER(headImageView,12.5);
UILabel*textContentLabel = [[UILabelalloc]init];
textContentLabel.textColor=BD_DEEP_COLOR;
textContentLabel.font=BD_CONTENT_FONT;
textContentLabel.numberOfLines=0;
self.textContentLabel= textContentLabel;
[self.contentViewaddSubview:textContentLabel];
//与图片左对齐,与图片底部保持多少距离,与contentview右边保持距离,与contentview底部保持距离,然后再设置内容label的最小高度。
[textContentLabelautoPinEdge:ALEdgeLefttoEdge:ALEdgeLeftofView:headImageView];
[textContentLabelautoPinEdge:ALEdgeTop toEdge:ALEdgeBottom ofView:headImageView withOffset:REPAIR_OTHER_MARGIN];
[textContentLabelautoPinEdgeToSuperviewEdge:ALEdgeRight withInset:REPAIR_LEFT_MARGIN];
[textContentLabelautoPinEdgeToSuperviewEdge:ALEdgeBottom withInset:REPAIR_TOP_MARGIN];
[textContentLabelautoSetDimension:ALDimensionHeight toSize:25 relation:NSLayoutRelationGreaterThanOrEqual];
}
return self;
}
能够实现这个的原理主要是UILabel的自适应功能。
是不是很简单呢。针对一些比较简单的cell,还有必要去算么?