NSLayoutConstraint为UILabel“增长”额外的线条

时间:2013-03-07 16:23:31

标签: ios objective-c uilabel nslayoutconstraint

我有UILabel,我想设置它,使其具有固定宽度和可变高度,取决于其text而不是superView

即。如果text是“Hello World”。那么标签就是......

------------------------
|Hello World.          |
------------------------

并且如果text是“这是一些非常长的文本,它会超过几行。”那么标签就是......

------------------------
|This is some very long|
|text that goes over   |
|several lines.        |
------------------------

我已经使用NSLayoutConstraint设置了固定宽度,并且我已将numberOfLines设置为0,但它只保留一行高度并将文本与省略号连接。

我知道有一些名为“contentResistance”的东西,但我不确定名称或如何使用它。

这可能吗?

2 个答案:

答案 0 :(得分:10)

您需要将标签的preferredMaxLayoutWidth设置为固定宽度。我不知道为什么它不能解决这个问题,因为你已经限制了宽度,但是你去了。

如果在Autolayout世界中设置固定大小感觉不对(它应该!)那么你可以在发生布局后在viewDidLayoutSubviews中设置标签宽度的值。在这种情况下,请注意不要陷入使布局无效的无限循环。

答案 1 :(得分:-2)

尝试此代码可能对您有帮助>

   label.text=@"haiiiiiiiii";

    UIFont *cellFont=[UIFont fontWithName:@"Helvetica" size:12.0];
    CGSize constraintSize=CGSizeMake(250,MAXFLOAT);
    CGSize txtViewSize=[label.text sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];

yourlabelname.numberOfLines = 0;

CGRect frame = yourlabelname.frame;

frame.size.width=250;

frame.size.height=txtViewSize.height;

yourlabelname.frame=frame;

yourlabelname.text=cellText;