UITableViewCell的自适应高度(还未实现)

原创
2015/05/04 19:31
阅读数 28
1. 先说一下Lable的自适应高度

   要想Lable自适应高度,必须要设置一下Lable的几个属性
   
   numberOfLines  Lable内容的文字显示的行数,其中0代表最大
   
   Font 字体大小
   
   LineBreakMode d断行格式
   
   Lable的size设置一个行高和上限,一般高要大于frame的实际高
   
   下面是代码
   
    //计算lable内容的高度
    CGRect Rect1 = [self.lable.text boundingRectWithSize:CGSizeMake(280, 1000) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:13.0]} context:nil];
    
    //临时保存Lable的frame
    
    CGRect tem = self.lable.frame;
    
    tem.size.height = Rect1.size.height;
    
    Lable.frame = tem;

1.1 sizeToFit的含义

    这个此的意思是自适应大小,假如你的lable的frame的height太大但是内容太少,当内容不足以将整个Label占满的时
    
    候,可以将Label中的内容顶部对齐显示,并自适应大小
 
 2.Cell的高度
 
   计算cell的高度主要分为以下几种情况:
   
   . Auto Layout with UILabel in UITableViewCell
   
   . Auto Layout with UITextView in UITableViewCell
   
   . Manual Layout with UILabel in UITableViewCell

   . Manual Layout with UITextView in UITableViewCell

   <1>随UITextView高度动态改变Cell高度
   
    Auto Layout with UILable in UITableViewCell这种方法时,一定要注册cell
   
    UINib *cellNib = [UINib nibWithNibName:@"C1" bundle:nil]; 
   
   [self.tableView registerNib:[UINib nibWithName:@"" bundle:nil] forCellReuseIdentifier:@"C1"];
   
   这里有一个问题需要特别注意,UITableView是一次性计算所有的cell的高度,所以如果cell很多的话,那么计算cell的
   
   方法就会每次都触发。在iOS7之后有一个方法可以避免:它就是- (CGFloat)tableView:(UITableView )tableView e
   
   stimatedHeightForRowAtIndexPath:(NSIndexPath )indexPath。要求返回一个Cell的估计值,实现了这个方法,那
   
   只有显示的Cell才会触发计算高度的protocol.
  
   由于systemLayoutSizeFittingSize需要cell的一个实例才能计算,所以这儿用一个成员变量存一个Cell的实列,这样
   
   就不需要每次计算Cell高度的时候去动态生成一个Cell实例,这样即方便也高效也少用内存。




展开阅读全文
打赏
0
0 收藏
分享
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部