2 lanhailvcao lanhailvcao 于 2012.11.02 15:26 提问

动态改变UITable单元格的高度?

我需要根据单元格的内容可以动态的修改单元格的高度,已经试了好几种方法,不知道有没有人可以提供能实现的方法?谢谢

3个回答

g989_1314125
g989_1314125   2012.11.02 15:34

你可以试试下面的例子:

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

NSDictionary *itemAtIndex = (NSDictionary *)[chatQuestions objectAtIndex:indexPath.row];

if ([self sizeForText:[itemAtIndex objectForKey:@"text"]].height+20>50) {
    return [self sizeForText:[itemAtIndex objectForKey:@"text"]].height+20;
}
else{
    return 50;}



}

 -(CGSize)sizeForText:(NSString*)text
  {


CGSize constraintSize;

constraintSize.width = 190.0f;

constraintSize.height = MAXFLOAT;
UIFont *labelFont = [UIFont fontWithName:@"Noteworthy-Light" size:18];

CGSize stringSize =[text sizeWithFont:labelFont constrainedToSize: constraintSize lineBreakMode: UILineBreakModeWordWrap];

return stringSize;
}
vikeyToy
vikeyToy   2012.11.02 16:14

LZ看看我的吧

//计算你需要的新高度
    CGSize maximumLabelSize = CGSizeMake(296,9999);

CGSize expectedLabelSize = [yourString sizeWithFont:yourLabel.font constrainedToSize:maximumLabelSize lineBreakMode:yourLabel.lineBreakMode];   

//调整
CGRect newFrame = yourLabel.frame;
newFrame.size.height = expectedLabelSize.height;
yourLabel.frame = newFrame;
zhanglei5415
zhanglei5415   Rxr 2012.12.26 13:56

1.在

-(UITableViewCell *)tableView:(UITableView *)tableView
                                   cellForRowAtIndex:(NSIndexPath *)indexPath 

方法中的尾部找到当前Cell中的最后一个元素,根据这个元素在Cell中的坐标,重置cell的frame.size.height。

2.在

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

       UITableViewCell *cell=[self tableView:tableView cellForRowAtIndexPath:indexPath];
       return cell.frame.size.height;
}
ce_la_vie
ce_la_vie 代码可以编辑成代码格式的,看上去更好看些了吧
大约 5 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!