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 に答える