我目前正在使用以下方法获取标签所需的高度
+ (CGFloat) getHeightOfLabel:(NSString *)text ofFontSize:(CGFloat)fontSize withConstraint:(CGSize)constraint
{
CGSize size = [text sizeWithFont:[UIFont systemFontOfSize:fontSize] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap];
return size.height;
}
这在大多数情况下都适用,但是,有些字符串由粗体和非粗体文本组成,可能会影响极端情况下所需的精确高度。
例如
有没有办法获得含有这种混合物的标签的准确高度?
答案 0 :(得分:1)
以下是
UILabel *labelWithAtributedText = ...
CGSize size = [labelWithAtributedText sizeThatFits:CGSizeMake(maxWidth, CGFLOAT_MAX)];
答案 1 :(得分:-2)
我也在努力解决这个问题。以下是一些想法:
使用 boldSystemFontOfSize 来计算高度,因为它可以提供最大的空间(在大多数情况下,这是最糟糕的。有些标签会比需要的高一些,但我觉得它比被切断了。)
计算 systemFontOfSize 与 boldSystemFontOfSize
+ (CGFloat) getHeightOfLabel:(NSString *)text ofFontSize:(CGFloat)fontSize withConstraint:(CGSize)constraint { CGSize size1 = [text sizeWithFont:[UIFont systemFontOfSize:fontSize] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap]; CGSize size2 = [text sizeWithFont:[UIFont boldSystemFontOfSize:fontSize] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap]; return (size1.height+size2.height)/2; }
如果你不需要实际身高,请使用[label sizeToFit],但我假设你需要这个身高:)