如何防止UILabel填满整个屏幕?

时间:2016-11-16 16:12:45

标签: ios autolayout uilabel

我正在尝试显示可能占用多行的UILabel,但我对高度调整大小有疑问。

以下是我在单行上显示正确文本时的外观:

enter image description here

当文本跨越多行时,会发生这种情况:

enter image description here

这是我正在使用的界面构建器设置:

enter image description here

理想情况下,我希望文本视图保留在屏幕顶部,只需占用尽可能多的空间来显示文本,但我真的不知道我哪里出错了。

3 个答案:

答案 0 :(得分:0)

使用自动布局处理文本视图有点棘手。如果可能,请使用UILabel。如果没有,那么文本视图有几个问题,最易于管理的解决方案是添加高度约束,然后在代码中对其进行操作。

文本视图内容的高度可以确定为:

let height = textView.sizeThatFits(textView.frame.size).height

也可以使用

let height = textView.contentSize.height

但结果有时是不正确的。

您需要设置文本视图的委托,以便在更改时刷新文本视图的大小。

答案 1 :(得分:0)

你确实根据你的约束给了它这样做的许可。任何高度> 0,只要距离上边距为20。由于您没有任何其他视图可以根据您的身高,您可以将插座连接到您的标签上并使用它:

@IBOutlet weak var label: UILabel!

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    label.sizeToFit()
}

答案 2 :(得分:0)

  1. 取消选中“首选宽度”显式复选框(在“大小检查器”中)
  2. 删除您UILabel上的身高限制。
  3. 一定会奏效。