根据内容无法自动调整TableViewCell的大小

时间:2019-05-04 12:13:29

标签: swift uitableview

我正在尝试根据单元格的内容自动调整UITableViewCells的大小;但是,行高根本没有改变,因此内容被裁剪。

我有一个带有一个原型单元的UITableViewController。因为有一个UI视图固定了0个上,下,前导和尾随约束。对于该视图,我添加了一个具有固定宽度和高度的ImageView,该ImageView以视图的中心和顶部为约束。此外,还有一个带有顶部和底部约束的居中标签。 因此,应该设置良好的约束条件。

此外,我添加了

tableView.rowHeight = UITableView.automaticDimension
tableView.estimatedRowHeight = 300

viewDidLoad()的{​​{1}}。

没有得到预期的结果

enter image description here

屏幕如下所示:

enter image description here

以下是约束条件:

Here is the Constraints

有什么想法吗?

编辑: 仅出于测试目的,我现在创建了一个新的原型单元,并仅向其添加了标签,将其固定在前,后,顶部和底部约束条件下,并将其TableViewController属性设置为lines,以便启用自动调整大小。但是,再次没有任何反应,标签甚至没有将文本包装在其中。

有关情节提要,约束和实际结果,请参见此处: https://imgur.com/a/Hq5frWp

我的TableViewController代码:

0

3 个答案:

答案 0 :(得分:0)

检查是否将标签的前向和后向约束设置为其superView,仅“水平中心”约束是不够的。

[或者,您也可以选择在标签上设置不带高度的固定宽度。 请勿设置标签的高度:请在下面查看更新的答案]

如果您希望标签的内容根据内容增加,还可以将其numberOfLines设置为0。

这就是标签高度的计算方式。

我尝试了一个小演示,对我来说很好用。

enter image description here

enter image description here

更新

请勿在标签上设置高度,因为它会固定其高度,并且不会随内容而增长。

根据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的大小检查器进行设置。

enter image description here (我在屏幕快照中将估算值保留为自动值,请忽略它)

答案 2 :(得分:0)

只需删除该TableViewController并从头开始。现在一切正常...