0

我必须在表格视图单元格中包含一个气泡,如附图中所示作为背景。

在此处输入图像描述

但是气泡的高度会根据文本长度不断变化。实现这一点的最佳方法是什么?

4

1 回答 1

1

您需要根据文本长度计算单元格高度,我通常在我的自定义UITableViewCell中创建一个类方法来执行此操作。

+ (CGFloat)cellHeightForText:(NSString *)text
{
    CGFloat cellHeight = 0.0;

    // calculate cellHeight height according to text length 

    // here you set the maximum width and height you want the text to be
    CGSize maxSize = CGSizeMake(kTextMaxWidth, kTextMaxHeight);

    CGSize size = [text sizeWithFont:TEXT_FONT 
                        constrainedToSize:maxSize 
                            lineBreakMode:UILineBreakModeWordWrap];  

    // set some minimum height for the cell (if the text is too short..)
    cellHeight = MAX(size.height, kMinHeight);  

    // here I usually increase the cellHeight according to the cell's other subviews
    // because if you have other subviews under/above the bubble you need to count them 
    // and add height to the cell...  
    cellHeight += kSomeSpaceToAdd;

    return cellHeight;
}  

然后你调用这个方法 heightForRowAtIndexPath

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    Message *currMessage = [self.myMessages objectAtIndex:indexPath.row];

    CGFloat height = [MyCustomCell cellHeightForText:currMessage.text];

    return height;
}  

当然你也应该根据文本长度设置气泡图框,我在自定义单元格layoutSubviews方法中做了一些事情,此时单元格高度已经设置好了,你可以使用它(self.bounds.size.height)来设置你的气泡图像相应地..

于 2012-08-06T15:16:33.223 回答