我试图让UILabel流向多行并使用autolayout将其下方的元素向下推。
这是我在viewwillappear中调用的代码。
self.myLabel.numberOfLines = 0;
self.myLabel.lineBreakMode = NSLineBreakByWordWrapping;
[_myLabel setContentCompressionResistancePriority:1000
forAxis:UILayoutConstraintAxisVertical];
[self.myLabel setNeedsDisplay];
[self.myLabel layoutIfNeeded];
[self.view setNeedsDisplay];
[self.view layoutIfNeeded];
UILabel被限制在内容视图的顶部,其下方的图像被约束到UILabel的底部。标签还具有> = 21的高度约束。
在初始加载时,标签只显示一行。
奇怪的是,在启动模态VC并关闭它之后,标签会转到多行,但无法按下它下面的元素。
初次加载时。
启动和取消模态VC后
我想知道这个问题是否与布局子视图的时间有关,但几乎尝试了所有事情。
提前感谢任何建议。
答案 0 :(得分:1)
简单示例:
@IBOutlet var multiLineLabel: UILabel!
。@IBAction func didTap(_ sender: Any)
功能。运行该应用。每次按下该按钮都会在顶部/多行标签上添加文字,并将“按下”底部标签,然后“按下”绿色视图的底部边缘。
class ExpandingLabelViewController: UIViewController {
@IBOutlet var multiLineLabel: UILabel!
@IBAction func didTap(_ sender: Any) {
if let s = multiLineLabel.text {
multiLineLabel.text = s + " Here is some more text."
}
}
}
完成后,您可以向视图中添加其他元素。只需确保你有一个垂直间距约束的“链”,最顶层的元素被约束到绿色超视图的顶部,最底部的元素被约束到绿色超视图的底部。