博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自定义不等高的cell-(storyboard)
阅读量:5269 次
发布时间:2019-06-14

本文共 1303 字,大约阅读时间需要 4 分钟。

对比自定义等高cell,需要几个额外的步骤(iOS8开始才支持)

  • 添加子控件和contentView之间的间距约束

  • 设置tableViewCell的真实行高和估算行高
// 告诉tableView所有cell的真实高度是自动计算(根据设置的约束来计算)self.tableView.rowHeight = UITableViewAutomaticDimension;// 告诉tableView所有cell的估算高度self.tableView.estimatedRowHeight = 44;

如果要支持iOS8之前

  • 如果cell内部有自动换行的label,需要设置preferredMaxLayoutWidth属性
- (void)awakeFromNib{    // 手动设置文字的最大宽度(目的是:让label知道自己文字的最大宽度,进而能够计算出自己的frame)    self.text_label.preferredMaxLayoutWidth = [UIScreen mainScreen].bounds.size.width - 20;}
  • 设置tableView的cell估算高度
// 告诉tableView所有cell的估算高度(设置了估算高度,就可以减少tableView:heightForRowAtIndexPath:方法的调用次数)self.tableView.estimatedRowHeight = 200;
  • 在代理方法中计算cell的高度
XMGStatusCell *cell;- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{    // 创建一个cell(cell的作用:根据模型数据布局所有的子控件,进而计算出cell的高度)    if (!cell) {        cell = [tableView dequeueReusableCellWithIdentifier:ID];    }    // 设置模型数据    cell.status = self.statuses[indexPath.row];    return cell.height;}- (CGFloat)height{    // 强制布局cell内部的所有子控件(label根据文字多少计算出自己最真实的尺寸)    [self layoutIfNeeded];    // 计算cell的高度    if (self.status.picture) {        return CGRectGetMaxY(self.pictureImageView.frame) + 10;    } else {        return CGRectGetMaxY(self.text_label.frame) + 10;    }}
 
End

转载于:https://www.cnblogs.com/l110/p/5136855.html

你可能感兴趣的文章
[转]C盘根目录下文件大揭秘
查看>>
cf 319 div 2 Modulo Sum 数论+DP
查看>>
如何修改地址栏 域名前面的图标
查看>>
大话商业智能
查看>>
ListView 滚动条的图标样式
查看>>
IOS深入学习(1)之图标文件(icon files)
查看>>
报表引擎 -架构描述
查看>>
Unity中的物体移动-Rigidbody方法
查看>>
Redis常用的命令
查看>>
线段树-矩形面积求并
查看>>
学习计划2
查看>>
Leetcode 1:two sum
查看>>
js生成接口请求参数签名加密
查看>>
swift学习:语言参考
查看>>
Ruby
查看>>
Java NIO (四) 选择器(Selector)
查看>>
利用fgetc合并2个源文件的内容,到一个新的文件中
查看>>
To Search Data in Multiple Columns using 'IN' Clause
查看>>
docker-compose
查看>>
visjs
查看>>