【问题标题】:IOS Autolayout MultiLine ULabel issueIOS Autolayout MultiLine ULabel 问题
【发布时间】:2015-09-28 19:02:51
【问题描述】:

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

【问题讨论】:

  • 您可以将高度约束设置为大于等于并检查。它可能会解决您的问题。
  • 如何设置标签的高度,标签的高度会增加或减少?
  • 您可以在开始时将高度设置为 0,并将高度限制标记为 >=,因此如果您的文本分配给标签,高度将根据文本高度增加。
  • 你能添加一些屏幕截图吗?这样,我们可以直观地看到问题。
  • @kokx 我尝试将高度设置为 0,但它对我不起作用

标签: ios autolayout uilabel multiline


【解决方案1】:

为了能够多行 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;

希望这会有所帮助!

【讨论】:

  • 这是针对目标 c 的,我没有使用代码添加任何约束。
猜你喜欢
  • 1970-01-01
  • 2017-05-30
  • 1970-01-01
  • 2022-08-19
  • 1970-01-01
  • 2013-05-12
  • 2015-05-18
  • 1970-01-01
  • 2021-11-09
相关资源
最近更新 更多