滚动视图中的动态高度TableView

时间:2015-12-24 04:27:14

标签: ios swift uitableview uiscrollview autolayout

我正在设计一个具有滚动视图的页面,在其上方是一个表格视图(禁用滚动)。为此,我在这个问题中引用了答案 - Make UITableView not scrollable and adjust height to accommodate all cells,但没有成功。

视图的层次结构以及提供的约束 -

- 主要观点

- 滚动视图
固定到主视图(0,0,0,0)的所有边,约束到边距

- 内容视图

固定为滚动视图(0,0,0,0),宽度等于主视图,高度等于主视图(优先级 - 250)

- 内容视图中的表格视图

滚动禁用,从所有边都有50个点空格,高度(> =),底部间距50(关系> =)。我放置大于等于动态增加高度。

现在,当我填充表格视图时,我将代码用作

 func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
    {
        let cell = tableview.dequeueReusableCellWithIdentifier("cellreuse", forIndexPath: indexPath) 
        cell.textLabel?.text = name[indexPath.row]

        tableview.frame.size = tableview.contentSize

        return cell
    }

因此,当我运行我的代码时,它会增加tableview框架,但不会拉伸内容大小,它只会变得怪异,因为我的滚动视图不会滚动到表视图的末尾,我的表视图也不会遵循自动布局约束。

1 个答案:

答案 0 :(得分:36)

我需要这样做 -

  • 删除该行 - tableView.frame.size = tableView.contentSize

  • 为表格视图添加高度约束。

  • 将优先级设为高

  • 创建高度限制的出口(Ctrl + Drag)。

  • 无论您何时需要重新加载表格数据,请将高度限制设置为tableview的内容高度。

tableHeightConstraint.constant = tableview.contentSize.height