xib tableViewCell 自适应高度

本文介绍了一种在iOS应用中实现UITableViewCell自适应高度的方法。主要步骤包括:在XIB文件中为控件设置约束;在模型类中定义cell的高度属性;在UITableViewCell中通过重写set方法来动态调整cell的高度;在ViewController中实现UITableViewDelegate方法来返回每个cell的实际高度。
摘要由CSDN通过智能技术生成

1 在xib中给各个控件添加约束


668737-0c63ac1a14e22d85.png
21D75143-9199-4C77-ABBF-9D474C1CB519.png

2 在model模型中 添加属性

@property (nonatomic, assign) CGFloat cellHeight;                              /**< 高度 */

3 在cell中重写model的set方法 在set方法中给cell中的控件赋值 注意 在计算label的宽度的时候 要手动计算 因为默认宽度是xib 中的宽度 320 , 然后 将cell中的各个控件的高度赋值给model中的cellHeight

- (void)setRecordModel:(AdjustAuditRecordModel *)recordModel {
_checkStatusLabel.text = [NSString stringWithFormat:@"操作状态:%@", _recordModel.audit_status];
    _noteLabel.text = [NSString stringWithFormat:@"备注/意见:%@", _recordModel.audit_opinion];
    CGFloat width = kScreenWidth-26;
    CGFloat noteHeight = [UILabel getLabelHeightByWidth:width Title:_noteLabel.text font:_noteLabel.font];
//    DLog(@"noteHeight %f   ", noteHeight);
    _recordModel.cellHeight = noteHeight +75;
}

4 最主要的是在我们控制器内部加上协议方法

- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath {
    return 80.f;
}

注意这里的预估高度当然是越接近越好,但其实还是比较随意,即使和真实高度差大一点也没有关系。
5 在viewController中的tableviewDelegate方法中, 取出model中的cellHeight ,然后返回cellHeight
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    AdjustAuditRecordModel *model = _stepList[indexPath.row];
//    DLog(@"cell height%f",model.cellHeight);
    return model.cellHeight;
}

注意:只能在iOS 9.0以上能使用,在iOS7上 constant报错, iOS8 没有试验

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值