使UITableViewCells动态化的麻烦

时间:2011-11-30 18:13:59

标签: objective-c ios dynamic uitableview

我有一个名为Comment的子类UITableViewCell,它有一个包含一些相关信息的UILabel。这些信息的长度各不相同,所以我不可能为UILabel设置合适的高度。

我试过让细胞动态化,但UILabel要么溢出细胞(y轴),要么细胞太大。

请你能告诉我哪里出错了!!

tableView... cellForRowAtIndexPath...

[cell->commentText setLineBreakMode:UILineBreakModeWordWrap];
[cell->commentText setMinimumFontSize:14];
[cell->commentText setNumberOfLines:0];
[cell->commentText setFont:[UIFont systemFontOfSize:14]];

NSString *text = [cell->commentText text];

CGSize constraint = CGSizeMake(320, 20000.0f);

CGSize size = [text sizeWithFont:[UIFont systemFontOfSize:14] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap];

[cell->commentText setText:text];
[cell->commentText setFrame:CGRectMake(20, 40, 280, MAX(size.height, 125))];


- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    NSString *text = [[[comments objectAtIndex:indexPath.row] body] stringByStrippingHTML];

    CGSize constraint = CGSizeMake(320, 20000.0f);

    CGSize size = [text sizeWithFont:[UIFont systemFontOfSize:14] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap];

    CGFloat height = MAX(size.height, 125);

    return height + 20;
}

1 个答案:

答案 0 :(得分:0)

您是否正在剥离cellForRowAtIndexPath:中的html?

我已经以两种不同的方式动态调整了标签的大小:

1)在IB中,将标签固定在单元格的顶部和底部,并将其高度设置为灵活(在右侧面板中的标尺图标下)。然后,只需实施heightForRowAtIndexPath即可。

2)在cellForRowAtIndexPath中,设置标签的宽度,然后调用[label sizeToFit]。使用相同的heightForRowAtIndexPath

相关问题