我必须在表格视图单元格中包含一个气泡,如附图中所示作为背景。
但是气泡的高度会根据文本长度不断变化。实现这一点的最佳方法是什么?
我必须在表格视图单元格中包含一个气泡,如附图中所示作为背景。
但是气泡的高度会根据文本长度不断变化。实现这一点的最佳方法是什么?
您需要根据文本长度计算单元格高度,我通常在我的自定义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)来设置你的气泡图像相应地..