如何计算包含表情符号iphone的文本的高度

时间:2013-07-23 12:55:32

标签: iphone uitableview nsstring uilabel emoji

我的问题几乎与this设置大小相似,以显示标签中的所有文本,但它与表格视图中的其他单元格重叠,因为单元格的高度不同。计算我目前正在使用此方法的高度

+(CGSize)CommentSize:(NSString*)comment {

return [comment sizeWithFont:[UIFont boldSystemFontOfSize:messageTextSize] constrainedToSize:CGSizeMake(265, CGFLOAT_MAX) lineBreakMode:UILineBreakModeWordWrap];
}

它正确计算文本的高度,但表情符号占用的额外高度(6像素)没有被添加到消息高度。

我还尝试将文本设置为另一个标签,使其成为sizetofit并获取高度并像这样传递它但它提供与上述约束方法相同的高度

+(CGSize)CommentSize:(NSString*)comment {

    UILabel *reviews = [[UILabel alloc]initWithFrame:CGRectMake(14, 13,265,30)];//Set frame
    reviews.numberOfLines=0;
    reviews.lineBreakMode = UILineBreakModeWordWrap;
    reviews.font = [UIFont boldSystemFontOfSize:14];
    reviews.text = comment;
    [reviews sizeToFit];

    CGFloat reviewlblheight = reviews.frame.size.height;

    CGSize maxlblSize = CGSizeMake(265,reviewlblheight);
    return maxlblSize;

}

我该如何计算高度。请帮帮我们

找到与此问题https://github.com/mattt/TTTAttributedLabel/issues/82相关的其他链接。试图按照mooshee的建议实施解决方案。但无法解决问题。任何人都可以建议我如何解决这个问题。

解决方案

上面第二个代码段的小编辑解决了这个问题 - 将UILabel更改为TTTAttributelabel 使用TTT和UIlabel计算的高度不同。

任何遇到同一问题的人都可以使用第二个代码段。我不确定它是否是正确的方法,但它解决了问题。

谢谢。

1 个答案:

答案 0 :(得分:-3)

检查此代码......

CGRect labelFrame = label.frame;  
labelFrame.size = [label sizeThatFits:CGSizeMake(100, 9999)];  
[label setFrame:labelFrame];