我有UILabel
,我想设置它,使其具有固定宽度和可变高度,取决于其text
而不是superView
。
即。如果text
是“Hello World”。那么标签就是......
------------------------
|Hello World. |
------------------------
并且如果text
是“这是一些非常长的文本,它会超过几行。”那么标签就是......
------------------------
|This is some very long|
|text that goes over |
|several lines. |
------------------------
我已经使用NSLayoutConstraint
设置了固定宽度,并且我已将numberOfLines
设置为0,但它只保留一行高度并将文本与省略号连接。
我知道有一些名为“contentResistance”的东西,但我不确定名称或如何使用它。
这可能吗?
答案 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;