IOS Autolayout MultiLine ULabel问题

时间:2015-07-10 06:23:16

标签: ios autolayout uilabel multiline

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

enter image description here

1 个答案:

答案 0 :(得分:0)

能够使用多行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的高度。例如:

我希望你已经采用了UILabel的高度约束的IBOutlet。因此,要更新高度,请转到以下代码:

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

希望这有帮助!