UITableView自动尺寸无法正常工作

时间:2018-11-15 17:34:08

标签: ios swift xcode uitableviewautomaticdimension

我有一个表格视图,其中填充了Firebase中的数据。 但是,当使用自动尺寸调整表格视图的大小时,某些文本会被截断。

这是我的情节提要,其约束设置为上,下,右和左。

enter image description here

当没有很多文本显示时,它可以正常工作。

enter image description here

但是,当我用大量文本填充单元格时,会发生这种情况。

enter image description here

这是我当前正在使用的代码。

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        if (tableView == questInformationTableView) {
            return 50
        }
        else if (tableView == questWalkthroughTableView) {

            return UITableView.automaticDimension
        }

        return 0
    }
    override func viewDidLoad() {
          super.viewDidLoad()
          questWalkthroughTableView.estimatedRowHeight = 250
          questWalkthroughTableView.rowHeight = UITableView.automaticDimension
        }

    func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
         return UITableView.automaticDimension
        }

我还将numberOfLines设置为0,并将标签设置为.sizeToFit()

3 个答案:

答案 0 :(得分:1)

建议检查

  1. 在表格单元格内启用了自动行高 enter image description here

  2. 检查标签是否可扩展且其底部约束设置为超级视图。 添加屏幕截图,显示我正在使用的动态高度示例单元的约束列表。

enter image description here

  1. 即使这不能解决您的问题,也建议重置所有约束并为您的单元格再次设置。

答案 1 :(得分:0)

不要使底部约束大于或等于将其设置为顶部约束。带走settings.json"terminal.integrated.fontFamily": "Consolas", 函数。您的视图所做的负载声明就足够了。重新加载数据时,也请调用estimatedHeightForRowAt

答案 2 :(得分:0)

我通常会设置自动高度尺寸,然后像这样在viewDidLoad中重新加载

override func viewDidLoad() {
    super.viewDidLoad()

    tableView.rowHeight = UITableViewAutomaticDimension
    tableView.estimatedRowHeight = 44

    tableView.reloadData()   
}