UITableView的cell 动态 定义 高度

  首先在

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

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    UITableViewCell *cell;
     if (indexPath.section==1) {
 
    
        UITableViewCell *newsCell = [DataTable dequeueReusableCellWithIdentifier:@"newsCell1"];
        if (newsCell==nil) {
            newsCell = [[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle
                                              reuseIdentifier:@"newsCell1"]autorelease];
        }
        CGRect cellFrame = [newsCell frame]; //定义的cell 的 frame
	cellFrame.origin = CGPointMake(0,0);
        
        UILabel *productLabel31=(UILabel *)[newsCell.contentView viewWithTag:111143];
        if (!productLabel31) {
            productLabel31=[[UILabel alloc]initWithFrame:CGRectMake(cellXOffset,6,sectionTwoLabelWidth,10)];
            productLabel31.backgroundColor=[UIColor clearColor];
            productLabel31.tag=111143;
            productLabel31.numberOfLines=0;
            productLabel31.lineBreakMode=UILineBreakModeWordWrap;
            productLabel31.text=[normalTitleArray objectAtIndex:indexPath.section];
            productLabel31.font= [UIFont systemFontOfSize:cellProductLabelFont];
            
            CGSize size = [productLabel31.text sizeWithFont:[UIFont systemFontOfSize:cellProductLabelFont] constrainedToSize:CGSizeMake(sectionTwoLabelWidth, CGFLOAT_MAX) lineBreakMode:UILineBreakModeWordWrap]; //算出cell 的具体高度
            
            productLabel31.frame=CGRectMake(cellXOffset,6,sectionTwoLabelWidth,size.height);
            [newsCell.contentView addSubview:productLabel31];
            [productLabel31 release];
        }
        cell = newsCell;
        cellFrame.size.height = productLabel31.frame.origin.y+productLabel31.frame.size.height +2; // 改变cell 的frame
        [cell setFrame: cellFrame]; // 改变cell 的frame
        
    }
    cell.selectionStyle=UITableViewCellSelectionStyleNone;
    return cell;
}
  最后 还要在 UITableView 的代理方法heightForRowAtIndexPath中设置下cell 的高度:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
     
    UITableViewCell *cell = [self tableView:tableView cellForRowAtIndexPath:indexPath];
   return cell.frame.size.height;
}


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

效果:



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值