autolayout 计算tableView的高度

本文详细介绍了在iOS7以后如何使用systemLayoutSizeFittingSize方法自动计算高度,并针对含有UITextView的cell进行高度计算优化。通过保存计算结果避免重复计算,确保了高度计算的效率和准确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

IOS7以后,出现了自动计算高度的方法。

systemLayoutSizeFittingSize。但是这个得到的是contentView的高度,所以cell的高度还要再+1.

在计算出高度之后,可以保存在数组中,或者在这个cell中有关CGFloat属性,来保存当前的cellmodel所占cell的高度。避免重复计算。


  1. - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 

  2.      C1 *cell = (C1 *)self.prototypeCell; 
  3.      cell.t.text = [self.tableData objectAtIndex:indexPath.row]; 
  4.      CGSize size = [cell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize]; 
  5.     NSLog(@"h=%f", size.height + 1); 
  6.     return 1  + size.height; 



在计算cell上具有UITextView的时候,由于UITextView的高度再init后是不会自己改变的。所以,要计算出UITextView所占的高度。



- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 


    C2 *cell = (C2 *)self.prototypeCell; 

    cell.t.text = [self.tableData objectAtIndex:indexPath.row]; 

    CGSize size = [cell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize]; 

    CGSize textViewSize = [cell.t sizeThatFits:CGSizeMake(cell.t.frame.size.width, FLT_MAX)]; 

    CGFloat h = size.height + textViewSize.height; 

    h = h > 89 ? h : 89;  //89是图片显示的最低高度, xib 

    NSLog(@"h=%f", h); 

    return 1 + h; 



详情资料参考:

http://www.cocoachina.com/industry/20140604/8668.html


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值