添付の画像に示すように、テーブルビューセルの背景として吹き出しを含める必要があります。
ただし、バブルの高さはテキストの長さに基づいて変化し続けます。これを実装するための最良の方法は何ですか?
添付の画像に示すように、テーブルビューセルの背景として吹き出しを含める必要があります。
ただし、バブルの高さはテキストの長さに基づいて変化し続けます。これを実装するための最良の方法は何ですか?
テキストの長さに応じてセルの高さを計算する必要があります。通常、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)それに応じてあなたのバブル画像..