计算适合多行UILabel文本所需的宽度?

时间:2016-06-17 13:20:57

标签: ios uilabel word-wrap

我正在尝试扩展2行UILabel的宽度以容纳不同数量的文本。为此,我尝试计算所需的宽度,然后将其设置为我在标签上设置的宽度约束。

但是,我所做的一切都忽略了高度/自动换行,并返回单行文本所需的宽度(不是2行)。如果在标签中使用2行或更多行,我是如何找到所需宽度的任何想法?

我尝试使用以下方法查找宽度:

1.使用boundingRectWithSize确定固定高度(2行高度)的合适大小

 CGSize maxSize = CGSizeMake(MAXFLOAT, fixedHeight);
 NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
    paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping;

NSDictionary *attributes = @{NSFontAttributeName: self.font, NSParagraphStyleAttributeName: paragraphStyle};

CGRect rect = [self.text boundingRectWithSize: maxSize
                                      options: (NSStringDrawingUsesLineFragmentOrigin)
                                   attributes: attributes
                                      context: nil];
  1. 使用sizeThatFits方法确定合适的大小。
  2. 谢谢!

2 个答案:

答案 0 :(得分:0)

确保您传递的fixedHeight足以容纳多行。为安全起见,您可以使用以下

 CGSize maxSize = CGSizeMake(300, CGFLOAT_MAX);   //where 300 is the width of label

设置高于上限将确保在宽度有限时考虑多条线。在之前的案例中,您将宽度设置为MAXFLOAT,因此宽度足以容纳整行内容。

答案 1 :(得分:0)

这可能很愚蠢,但请确保' numberOfLines' UILabel的属性设置为0,因此大小计算方法可以使用多行选项。