UITableViewCell的动态高度

时间:2012-05-24 19:46:41

标签: iphone objective-c ios xcode uitableview

好的..所以在你标记之前这是一个重复的问题,请阅读它。我已经实现了CIMGF给出的代码来动态调整UITableViewCell的大小。它第一次工作,但现在似乎不起作用。奇怪吧? 无论如何,这里是代码片段:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
{
    NSString *text = [[buzzList objectAtIndex:[indexPath row]] objectForKey:@"description"];
    CGSize constraint = CGSizeMake(260, 20000.0f);
    CGSize size = [text sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap];
    CGFloat height = size.height;

    return height +25 +(CELL_CONTENT_MARGIN * 2);
}

cellForRowAtIndexPath的相应代码是:

[cell.descriptionLabel setLineBreakMode:UILineBreakModeWordWrap];
[cell.descriptionLabel setMinimumFontSize:FONT_SIZE];
[cell.descriptionLabel setNumberOfLines:0];
[cell.descriptionLabel setFont:[UIFont systemFontOfSize:FONT_SIZE]];

CGSize constraint = CGSizeMake(CELL_CONTENT_WIDTH - (CELL_CONTENT_MARGIN * 2), 20000.0f);

CGSize size = [[[buzzList objectAtIndex:indexPath.row] objectForKey:@"description"] sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap];
cell.descriptionLabel.text=[[buzzList objectAtIndex:indexPath.row] objectForKey:@"description"];
CGRect rect=CGRectMake(45, 20, 260, size.height);
[cell.descriptionLabel setFrame:rect];

我设置值45,20,260以获取单元格中文本起点的确切位置及其宽度。值是正确的,无需修改。但是,当我执行代码时,我得到了正确的单元格高度(根据文本动态调整)BUT descriptionLabel最多显示2行文本。之后它会截断文本。 :(

1 个答案:

答案 0 :(得分:0)

描述标签的约束包含两个常量CELL_CONTENT_WIDTHCELL_CONTENT_MARGIN,而您创建的CGRect包含一个数字(260)。如果CELL_CONTENT_WIDTH - (CELL_CONTENT_MARGIN * 2)> 260那么这应该是你的问题。