调整 UIView 大小导致子 table UITableView 消失

Resizing UIView causes child table UITableView to disappear

我有一个 UIView,其中包含一个标签、一个按钮和一个从服务器动态填充其数据的 UITableView。在动态填充内容后,我无法调整父 UIView 的大小以适合其内容。为了演示我的问题,我将包含的 UIView 的背景设置为蓝色。

用数据填充 TableView 后,UIView 的高度没有调整导致 Tableview 数据溢出,如下图所示。

我已将 TableView 的底部、前导和尾部 space 约束设置到超级视图,并将顶部 space 约束设置到按钮。 UIView 本身没有设置高度限制。

我实现了一个功能,可以在填充 TableView 的内容后手动重新计算 UIView 的高度。以下函数的代码:

    func resizeToFitSubviews()
{

    var w: CGFloat = self.frame.size.width,
    h: CGFloat = 0
    for view in subviews {
        if view.frame.origin.y + view.frame.height > h { h = view.frame.origin.y + view.frame.height }
    }
    self.frame.size = CGSize(width: w, height: h)

}

这个功能有效。 UIView 调整到看起来合适的大小,但 TableView 在这样做之后消失了:

完全不知道为什么会这样。标签和按钮似乎不受影响。我要么需要让它自动布局自动调整 UIView 的高度,要么让它调整 UIView 的大小不会导致 TableView 消失。

在 View Debugger 中,TableView 的高度 return 为 0(而行 return 为 130,因为这是我 return 在我的 heightForRowAt功能)。

谢谢

如果您使用自动布局,请不要调整视图框架。

设置高度限制并将其调整为您的计算值。

-

此外,手动计算此高度可能更容易。

height = numberOfRows * heightPerRow