UITableViewCell / UICollectionViewCell添加子控件时,都是添加到对应的self.contentView / self.collectionView中,而self.contentView / self.collectionView又隶属于cell本身(即self),因此在使用通过约束来实现自动计算行高时时,子控件相对于self.contentView 约束设置 和子控件之间相对约束设置完后,一定要有self.contentView相对于self(即cell本身)约束(当然self.contentView的底部和最下面一个控件的地步是重合的约束也是必须的),否则自动计算行高没法实现啊。
在控制器.m文件中实现自动计算行高代码如下:
- (void)viewDidLoad{
//预估行高
self.tableView.estimatedRowHeight = 300;
//设置自动计算行高
self.tableView.rowHeight = UITableViewAutomaticDimension;
}
在自定义cell .m文件中实现代码如下:
- (nonnull instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(nullable NSString *)reuseIdentifier{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
[self setUpUI];
}
return self;
}
- (void)setUpUI{
//self.bottomView是子控件中最下面的一个控件
[self.contentView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.top.equalTo(self);
make.bottom.equalTo(self.bottomView.mas_bottom);
}];
}