我正在尝试根据单元格的内容自动调整UITableViewCells的大小;但是,行高根本没有改变,因此内容被裁剪。
我有一个带有一个原型单元的UITableViewController。因为有一个UI视图固定了0个上,下,前导和尾随约束。对于该视图,我添加了一个具有固定宽度和高度的ImageView,该ImageView以视图的中心和顶部为约束。此外,还有一个带有顶部和底部约束的居中标签。 因此,应该设置良好的约束条件。
此外,我添加了
tableView.rowHeight = UITableView.automaticDimension
tableView.estimatedRowHeight = 300
到viewDidLoad()
的{{1}}。
没有得到预期的结果
屏幕如下所示:
以下是约束条件:
有什么想法吗?
编辑:
仅出于测试目的,我现在创建了一个新的原型单元,并仅向其添加了标签,将其固定在前,后,顶部和底部约束条件下,并将其TableViewController
属性设置为lines
,以便启用自动调整大小。但是,再次没有任何反应,标签甚至没有将文本包装在其中。
有关情节提要,约束和实际结果,请参见此处: https://imgur.com/a/Hq5frWp
我的TableViewController代码:
0
答案 0 :(得分:0)
检查是否将标签的前向和后向约束设置为其superView,仅“水平中心”约束是不够的。
[或者,您也可以选择在标签上设置不带高度的固定宽度。 请勿设置标签的高度:请在下面查看更新的答案]
如果您希望标签的内容根据内容增加,还可以将其numberOfLines设置为0。
这就是标签高度的计算方式。
我尝试了一个小演示,对我来说很好用。
更新:
请勿在标签上设置高度,因为它会固定其高度,并且不会随内容而增长。
根据Revanth的建议,宽度就足够了,那就是您选择在标签上设置“宽度”约束还是“前导和尾随”约束。
但是请确保其高度灵活,并且numberOfLines = 0才能使其生长。
答案 1 :(得分:0)
据我所知,您的禁忌是完美的。
由于您尚未与我们共享代码,因此我会指出所有检查点。
首先,检查是否正确使用了tableView cellForRowAt
函数。
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
guard let cell = tableView.dequeueReusableCell(withIdentifier: "thatCellsIdentifier", for: indexPath) as? YourTableViewCell else{
fatalError()
}
cell.label.text = "sample"
cell.image.image = UIImage(named: "yourImage")
return cell
}
编辑
现在在您的TableViewController的viewDidLoad()
中设置
tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 300
或使用TableViewController的大小检查器进行设置。
答案 2 :(得分:0)
只需删除该TableViewController并从头开始。现在一切正常...