我正在尝试扩展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];
谢谢!
答案 0 :(得分:0)
确保您传递的fixedHeight
足以容纳多行。为安全起见,您可以使用以下
CGSize maxSize = CGSizeMake(300, CGFLOAT_MAX); //where 300 is the width of label
设置高于上限将确保在宽度有限时考虑多条线。在之前的案例中,您将宽度设置为MAXFLOAT
,因此宽度足以容纳整行内容。
答案 1 :(得分:0)
这可能很愚蠢,但请确保' numberOfLines' UILabel的属性设置为0,因此大小计算方法可以使用多行选项。