MultiLine UIlabel不显示所有文本?

时间:2015-07-09 11:27:08

标签: ios objective-c swift uilabel

我想根据我使用过的文字显示标签尺寸 uilabel行数。

lbl.numberoflines = 0;

但它只显示三行,然后显示......并非所有文字都显示出来。

当我给出超过3的行数时,它会在标签中显示该行。

感谢您的帮助

5 个答案:

答案 0 :(得分:4)

试试这个

lbl.lineBreakMode = UILineBreakModeWordWrap;

lbl.numberOfLines = 0;

如果你想手动计算高度

 lbl.numberOfLines = 0; // allows label to have as many lines as needed
lbl.text =@"xxxxxxxxxxxxxxxxxxxxxx";
CGSize labelSize = [ lbl.text sizeWithFont: lbl.font constrainedToSize:CGSizeMake(300, 300)  lineBreakMode:NSLineBreakByWordWrapping];

// set the frame of labels here 

否则你可以直接放在属性

enter image description here

<强> swift3

lbl.lineBreakMode = .byWordWrapping
lbl.numberOfLines = 0

// allows label to have as many lines as needed
lbl.text = "xxxxxxxxxxxxxxxxxxxxxx"
var labelSize = lbl.text.size(with: lbl.font, constrainedToSize: CGSize(width: 300, height: 300), lineBreakMode: .byWordWrapping)
// set the frame of labels here  }

答案 1 :(得分:1)

所以我将numberOfLines设为0并将lineBreakMode作为WordWrap并给出了适当的约束。

有效的方法是将首选宽度设置从显式更改为自动。即由此: -

enter image description here

到此: -

enter image description here

答案 2 :(得分:0)

试试这个

lbl.lineBreakMode = UILineBreakModeWordWrap;
lbl.numberOfLines = 0;
[lbl sizeTofit];

答案 3 :(得分:0)

使用此方法。可以帮忙

-(CGSize)getLabelSize:(NSString *)text
{

    UIFont *cellFont = [UIFont fontWithName:@"Helvetica" size:14.0];
    CGSize constraintSize = CGSizeMake(300.0f, MAXFLOAT);
    CGSize labelSize = [text sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];
    return labelSize;

}

答案 4 :(得分:0)

所有答案可能都有帮助。但是使用旧方法。

您无法在视图中添加约束吗?

设置布局约束会非常容易,然后就可以了。