2012-08-07 63 views
0

我想让我的UITableView中的单元格适应它们中文本的长度。如果文本太长,单元格会变长一点以适应它。ios - UITableViewCells不扩展以适应文本

我想是这样的:

cell.textLabel.numberOfLines = 0; 
cell.textLabel.lineBreakMode = UILineBreakModeWordWrap; 

cell.textLabel.text = [[name stringByAppendingString:@": "] 
           stringByAppendingString:comment]; 

但是,什么情况是,细胞只是试图以适应文本的空间相同的垂直量,并没有得到任何高。

有人会知道我在这里做错了吗?

谢谢!

回答

4

您需要使用单元高度委托。看看这里:dynamic UITableViewCell height

您需要做的是计算文本高度,然后将单元格的高度设置为该高度。
具体地说这个方法:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 
    NSString *yourText = [someArray objectAtIndex:indexPath.row]; 
    CGSize constraint = CGSizeMake(320 /*cell width*/, CGFLOAT_MAX); 
    CGSize size = [yourText sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap]; 
    CGFloat height = MIN(size.height, 44.0f); 

    return height; 
} 
+0

其中该柱的一部分?我查看了一下,并没有看到问题中会做什么。或者你的意思是答案指向的教程? – GeekedOut 2012-08-07 16:59:11

+0

你会想看看答案:http://stackoverflow.com/a/8903694/1535038。事情是你需要通过传递文本和宽度来计算行高,然后在heightForRowAtIndexPath:中返回高度。 – 2012-08-07 17:02:00

+0

谢谢 - 但是CELL_CONTENT_WIDTH和CELL_CONTENT_MARGIN来自哪里?有没有办法动态获取这些? – GeekedOut 2012-08-07 17:03:13