如果文字需要自动布局,我需要UILabel
转到多行。在代码和故事板中,我已将numberOfLines设置为0并进行自动换行,我也称为sizeToFit
。
如果我将标签的高度约束设置为足够大的值(例如200),则会在多行显示全部文本。但是对于短文本,它不会收缩,留下大量空白区域。但是如果我将高度约束设置为较低的值,例如> = 21,那么它只显示一行并切断其他所有内容。
视图层次结构是View-Scrollview-Contentview-elements我为最低元素设置了一个底部常量,优先级为250,因此应该进行调整。 Autolayout显示没有错误
然而,没有什么能够为标签创建一个巨大的高度限制,让标签扩展到多行。
非常感谢有关如何解决此问题的任何建议。
在viewwillappear中:
_myLabel.lineBreakMode = UILineBreakModeWordWrap;//deprecated but I threw it in too
_myLabel.lineBreakMode = NSLineBreakByWordWrapping;
_myLabel.numberOfLines = 0;
[_myLabel sizeToFit];
// height constraint for label
height>=21//text does not extend more than one line
height=200//text does extend more than one line but leaves lots of whitespace if text is short ie it does not shrink.
答案 0 :(得分:0)
,
设置属性
_myLabel.numberOfLines = 0;
设置约束
_myLabel.height <= 200
注意:标签高度将根据其文字内容自动设置。从约束关系标签高度最多200
,至少高度是其文本内容(自动调整)。
现在还有任何疑问,然后问。
答案 1 :(得分:0)
使用Autolayout调用sizeToFit
不会产生任何影响。
您应该将标签的垂直内容压缩阻力优先级设置为必需。此优先级禁止Autolayout根据需要为标签提供较小的高度以显示所有行:
[_myLabel setContentCompressionResistancePriority:1000
forAxis:UILayoutConstraintAxisVertical];
您也可以在界面构建器的大小检查器中应用此优先级。
答案 2 :(得分:0)
您应该为标签的高度添加2个约束:
答案 3 :(得分:0)
为您的标签和故事板集leading, trailing, top, bottom
提供适当的numberOfLines = 2
限制。我指定约束的原因是auto-layout will then automatically resize the intrinsic size of the label
基于内容。希望,这很有帮助。