xib中tableviewcell rowheight的高度自适应

原创文章
声明:作者声明此文章为原创,未经作者同意,请勿转载,若转载,务必注明本站出处,本平台保留追究侵权法律责任的权利。
全栈老韩
全栈工程师,擅长iOS App开发、前端(vue、react、nuxt、小程序&Taro)开发、Flutter、React Native、后端(midwayjs、golang、express、koa)开发、docker容器、seo优化等。

用xib实现高度自适应所应该具有的条件:

  1. 每一个cell中,内容文字显示有多有少,使得每一个cell的高度不能完全一致;

  2. 自定义的cell的xib中,控件的布局从左到右,从上到下进行布局;

  3. xib中最靠近cell Content的控件,要设置相对于content的bottom约束。

  4. 内容文字控件UILabel的xib需要设置lineNumber = 0; 并且Preferred width 要勾选Explicit。
    xib截图

  5. 需要在对应的控制器中,设置

复制代码
UITableView,
        self.tableView.rowHeight =  UITableViewAutomaticDimension;
     self.tableView.estimatedRowHeight = 365;
  1. 需要在对应控制器,设置一个cell的实例demoHeightCell的全局cell类实例,

// demo height cell
    CYCourseDetailTableViewCell *demoHeightCell;
然后通过nib的loadNib方式实例化

复制代码
demoHeightCell = [[[NSBundle mainBundle] loadNibNamed:@"CYCourseDetailTableViewCell" owner:nil options:nil] firstObject];

然后如下:

复制代码
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
    [demoHeightCell  valueWithModel:courseArr[indexPath.row]];
    CGSize demoSize = [demoHeightCell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize];
    return demoSize.height;
}

返回计算后的高度,即为理想宽度。

暂无评论,快来发表第一条评论吧