cell自适应
cell自适应
Gong_xiao 发表于2年前
cell自适应
  • 发表于 2年前
  • 阅读 25
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 十分钟定制你的第一个小程序>>>   

我们声明一个存计算Cell高度的实例变量:

@property (nonatomic, strong) UITableViewCell *prototypeCell;

 

然后初始化它:

self.prototypeCell  = [self.tableView dequeueReusableCellWithIdentifier:@"C1"];

 

下面是计算Cell高度的实现:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {     C1 *cell = (C1 *)self.prototypeCell;     cell.t.text = [self.tableData objectAtIndex:indexPath.row];     CGSize size = [cell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize];     NSLog(@"h=%f", size.height + 1);     return 1  + size.height; }

 

看了代码,可能你有点疑问,为何这儿要加1呢?笔者告诉你,如果不加1,结果就是错误的,Cell中UILabel将显示不正确。原因就是因为这行代码CGSize size = [cell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize];由于是在cell.contentView上调用这个方法,那么返回的值将是contentView的高度,UITableViewCell的高度要比它的contentView要高1,也就是它的分隔线的高度。如果你不相信,那请看C1.xib的属性,比较下面两张图。 

 

 

发现没Cell的高度是127, 面contentView的高度是126, 这下明白了吧。

 

为了让读者看清楚,我将Cell中UILabel的背景色充为了light gray.下面是运行效果: 

 

2. Auto Layout with UITextView in UITableViewCell

本小段教程将介绍UITextView在cell中计算高度需要注意的地方。同样参考上面我们创建一个C2.xib, UITableViewCell的子类C2,并关联C2.xib与C2类。并在C2.xib中对其布局,同样使用了auto layout. 布局如下图: 


共有 人打赏支持
粉丝 3
博文 55
码字总数 7990
×
Gong_xiao
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: