UITableViewAutomaticDimension没有在UITabel的UILabel中使用表情符号字符设置正确的高度

时间:2016-11-03 10:48:45

标签: uitableview emoji heightforrowatindexpath

我正在使用UITableViewAutomaticDimension来获取UITableview的单元格的动态高度。当我在UITableviewCell内的标签中设置纯文本时,一切正常。

当我在标签中设置纯文本和表情符号字符时,单元格高度出现问题。单元格高度确实动态增加,但由于表情符号字符,高度错误。我认为UITableview可能会将unicode视为文本而不是表情符号图标,因此它只返回纯文本高度。

在我的情况下,标签的x原点也是动态的。

请查看以下屏幕截图,了解发生的问题,

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

删除UITableViewAutomaticDimension,通过以下给定方法动态计算标签高度,并相应地管理单元格高度。

// ---计算字符串的高度--- //

+(CGFloat)textHeight:(NSString*)text withFont:(UIFont*)font andMaxWidth:(CGFloat)maxWidth 
{
     CGFloat maxHeight = 99999;
     CGSize maximumLabelSize = CGSizeMake(maxWidth,maxHeight);
     NSDictionary *attributes = @{NSFontAttributeName: font};
     CGRect expectedLabelSize = [text boundingRectWithSize:maximumLabelSize options:(NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading) attributes:attributes context:nil];
     return expectedLabelSize.size.height;
}