IOS Autolayout MultiLine ULabel问题

问题描述:

这可能是一个简单的问题,但我有点卡在这个。我在我的一个标签中给出了一个按钮的约束leading top trailing and bottom。在我的情况下,当我删除底部约束多线标签正常工作,但是当我添加按钮约束,那么它不会破坏线。同样的事情在另一个地方工作,我也无法理解这个问题。IOS Autolayout MultiLine ULabel问题

enter image description here

+0

您可以将高度限制设置为大于等于并检查。它可能会解决你的问题。 – Hindu

+0

我该如何设置高度将增加或减少的标签的高度? –

+0

您可以在开始时将高度设置为0,并将标记高度约束设置为> =,因此如果您的文本分配给标签,高度将根据文本高度增加。 – Hindu

在能多的UILabel,你需要设置适当的高度为ContentSize。

如果UILabel的contentSize不符合高度,那就不会破坏 !

因此,您需要计算UILabelView文本的高度。你可以从下面的代码中做到这一点:

func heightForView(text:String, #font:UIFont, #width:CGFloat) -> CGFloat{ 
    let label:UILabel = UILabel(frame: CGRectMake(0, 0, width, CGFloat.max)) 
    label.numberOfLines = 0 
    label.lineBreakMode = NSLineBreakMode.ByWordWrapping 
    label.font = font 
    label.text = text 

    label.sizeToFit() 
    return label.frame.size.height 
} 

let font = UIFont(name: "Helvetica", size: 20.0) 

var height = heightForView("This is just a load of text", font: font, width: 100.0) 

然后根据约束文本增加你的UILabel的高度。例如:

我希望你已经采取了IBOutlet UILabel的高度约束。所以,要更新高度,请参阅以下代码:

_constLabelHeight.constant = label.frame.size.height; 

希望这有助于您!

+0

这是为目标c,我不添加任何约束使用代码。 –