全面解析iOS应用中自定义UITableViewCell的方法

2020-01-15 13:30:04王振洲

    UITableViewCell *myCell=[self tableView:tableView cellForRowAtIndexPath:indexPath];//获取当前indexPath中的cell实例  
    if( myCell == nil ){  
        return 0;  
          
    }else{  
          
        NSLog(@"%f",myCell.frame.size.height);  
        return  myCell.frame.size.height;  
          
    }  
    return 0;  
      
}  
上面获取当前indexPath的cell实例会重新申请建立一个实例(意思是个cell实际要创建两个实例)
这样的目的是为了获取cell的frame,如果不这样做也可以在第一部分创建cell的时候,将cell的frame保存在一个私有

 

变量中,在heightForRowAtIndexPath中访问这个私有变量

通过上述方式可以动态改变UITableViewCell的高度

四、对于一个UILabel,根据其内容计算CGRect

首先要设置UILable的font,比如

tmLabel.font=[UIFont  systemFontOfSize:14.0f];

然后使用boundingRectOfSize计算出该尺寸对应的矩形大小,代码如下:

复制代码
NSDictionary *attrDic=@{NSFontAttributeName:[UIFont systemFontOfSize:12.0f]};  
CGSize labelSize=[text boundingRectWithSize:CGSizeMake(320, 990)  
                                    options:NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading  
                                 attributes:attrDic context:nil].size;  
  
CGRect labelRect=CGRectMake(0, 0, labelSize.width, labelSize.height);   
 现在UILable的rect都可以被计算出来了,那么如果自定义一个UITableViewCell,并且其内部的UILabel高度可变的话
也是可以实现的

 

五、内部含有可变高度的UILabel的UITableViewCell