7

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

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

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

如果text是“这是一些非常长的文本,跨越了几行”。然后标签将是...

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

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

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

这可能吗?

4

2 回答 2

10

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

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

于 2013-03-07T16:28:05.963 回答
-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;
于 2013-03-07T16:28:33.880 回答