UITableView的cell 动态 定义 高度

来源:互联网 发布:sqlserver 2008r2.net 编辑:程序博客网 时间:2024/05/02 02:36

转自 http://blog.csdn.net/jinglijun/article/details/8333827

首先在

UITableView 的代理方法中算出每个cell 的真实高度,然后设置便ok。如下:

[html] view plaincopy
  1. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{  
  2.     UITableViewCell *cell;  
  3.      if (indexPath.section==1) {  
  4.    
  5.       
  6.         UITableViewCell *newsCell = [DataTable dequeueReusableCellWithIdentifier:@"newsCell1"];  
  7.         if (newsCell==nil) {  
  8.             newsCell = [[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle  
  9.                                               reuseIdentifier:@"newsCell1"]autorelease];  
  10.         }  
  11.         CGRect cellFrame = [newsCell frame]; //定义的cell 的 frame  
  12.     cellFrame.origin = CGPointMake(0,0);  
  13.           
  14.         UILabel *productLabel31=(UILabel *)[newsCell.contentView viewWithTag:111143];  
  15.         if (!productLabel31) {  
  16.             productLabel31=[[UILabel alloc]initWithFrame:CGRectMake(cellXOffset,6,sectionTwoLabelWidth,10)];  
  17.             productLabel31.backgroundColor=[UIColor clearColor];  
  18.             productLabel31.tag=111143;  
  19.             productLabel31.numberOfLines=0;  
  20.             productLabel31.lineBreakMode=UILineBreakModeWordWrap;  
  21.             productLabel31.text=[normalTitleArray objectAtIndex:indexPath.section];  
  22.             productLabel31.font= [UIFont systemFontOfSize:cellProductLabelFont];  
  23.               
  24.             CGSize size = [productLabel31.text sizeWithFont:[UIFont systemFontOfSize:cellProductLabelFont] constrainedToSize:CGSizeMake(sectionTwoLabelWidth, CGFLOAT_MAX) lineBreakMode:UILineBreakModeWordWrap]; //算出cell 的具体高度  
  25.               
  26.             productLabel31.frame=CGRectMake(cellXOffset,6,sectionTwoLabelWidth,size.height);  
  27.             [newsCell.contentView addSubview:productLabel31];  
  28.             [productLabel31 release];  
  29.         }  
  30.         cell = newsCell;  
  31.         cellFrame.size.height = productLabel31.frame.origin.y+productLabel31.frame.size.height +2; // 改变cell 的frame  
  32.         [cell setFrame: cellFrame]; // 改变cell 的frame  
  33.           
  34.     }  
  35.     cell.selectionStyle=UITableViewCellSelectionStyleNone;  
  36.     return cell;  
  37. }  
  最后 还要在UITableView 的代理方法heightForRowAtIndexPath中设置下cell 的高度:
[html] view plaincopy
  1. - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{  
  2.        
  3.     UITableViewCell *cell = [self tableView:tableView cellForRowAtIndexPath:indexPath];  
  4.    return cell.frame.size.height;  
  5. }  


 这样cell就可以伴随你cell 内容的多少而 任意改变高度了。 

效果:



原创粉丝点击