iOS8以后UITableView,cell高度自适应注意点

注意点一

//在设置 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);
    }];
}

你可能感兴趣的:(iOS8以后UITableView,cell高度自适应注意点)