如何防止UILabel填满整个屏幕?
问题描述:
我想显示一个UILabel
,可能会占用多行,但我在调整高度方面存在问题。如何防止UILabel填满整个屏幕?
这里是什么样子时,我有过一个单行文本,正确显示:
当文本跨越多行但出现这种情况:
这里的我正在使用的界面生成器设置:
理想情况下,我希望文本视图保持在屏幕的顶部,只占用尽可能多的空间,因为它需要显示文本,但我真的不能告诉我哪里出错了。
答
使用自动布局处理文本视图有点棘手。如果可能,请使用UILabel
。如果不是,那么文本视图有几个问题,而最易于管理的解决方案是添加高度约束,然后在代码中对其进行处理。
文本视图内容的高度可以被确定为:
let height = textView.sizeThatFits(textView.frame.size).height
另外,也可以使用
let height = textView.contentSize.height
但有时结果不正确。
您确实需要为文本视图设置委托,以便在更改时刷新文本视图的大小。
答
那么你确实已经根据你的约束给予它许可。任何高度> 0,只要它距上边距20。既然你没有任何其他的观点立足你的身高关,你可以挂钩一个出口到标签中,并使用此:
@IBOutlet weak var label: UILabel!
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
label.sizeToFit()
}
答
- 取消选中“首选宽度”明确复选框(大小督察)
- 删除UILabel上的高度限制。
它肯定会工作。
一旦我拥有了该尺寸,我该怎么做?为UILabel设置一个新框架什么也不做。 – spacitron
对不起,这是为了UITextView。你的问题必须在其他地方。至于这种用法,您需要一个出口到文本视图的高度约束,并将其常量设置为检索高度的值。 –