注意点一
//在设置 tableView 高度为自适应(UITableViewAutomaticDimension)
//要记得设置估算高度(estimatedRowHeight)才会发挥作用
_tableView.rowHeight = UITableViewAutomaticDimension;
_tableView.estimatedRowHeight = 100.0f;
注意点二
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(nullable NSString *)reuseIdentifier;
//直接在cell的初始化方法里用autolayout布局
//布局参照最好都以contentView为基准
例:[self makeConstraints];
- (void)makeConstraints {
[self.nameLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.contentView).offset(16.0f);
make.top.equalTo(self.contentView).offset(16.0f);
}];
[self.whiteView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self.contentView);
make.left.right.equalTo(self.contentView);
make.bottom.equalTo(self.nameLabel).offset(10.0f);
}];
//假设我们是按从上往下的顺序开始布局。
//当有高度动态变化的控件(如:nameLabel)时,用 whiteView 来框住 nameLabel ,这样我们就可以根据 whiteView 来确定 nameLabel 的位置。
//如果最底部的控件的高度是固定的,我们直接相对 whiteView 布局即可;
//如果最底部的控件的高度不是固定的,我们需要添加一个额外的底部控件(如:autoResizingView)来确定布局,这样就可以动态布局高度啦!
UIView *autoResizingView = [[UIView alloc] init];
[self.contentView addSubview:autoResizingView];
[autoResizingView mas_remakeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self.whiteView.mas_bottom);
make.left.right.equalTo(self.contentView);
make.bottom.equalTo(self.contentView).offset(-10.0f);
}];
}