如何使 UITableView 以 UIStackView 中的 X 和 Y 为中心

How to keep UITableView centered on X and Y inside an UIStackView

我在垂直 UIStackView 中有一个 UILabel 和一个 UITableView。我希望此堆栈视图始终保持居中,即使将元素添加到 table 视图时也是如此。

现在我向堆栈视图添加了 Horizontal in ContainerVertical in Container 约束。但它仍然说堆栈视图缺少 Y 约束。如果我加一个,它就不会再居中了。

知道我应该添加什么约束以使其始终居中吗?

这里有两张屏幕截图,展示了我想要堆栈视图的方式,一张展示了我现在拥有的:

我在第二张图片中添加了一个从堆栈视图到标题的垂直 space 约束,这就是它看起来像那样的原因。

嗯...我前段时间收到了来自客户的相同请求,问题是 table 视图不应该那样使用,因为如果添加太多项目 table 将在两个垂直方向上增长,这一点都不好……但是!据我所知,你的单元格都是一样大的,所以,这就是我所做的,因为我的 table 有一些有限的行,而且所有的单元格都是相同的大小:

我向 tableView 添加了一个高度约束,并将其作为 IBOutlet 扔给它所属的 class。获得任务的行数后,您只需更新 tableView 高度约束的常量值,方法是将行数乘以单元格的固定高度。这样,您的 tableView 的高度将由它包含的行数定义。您可能应该只转储堆栈视图,单独使用 tableView 并在考虑到我提到的高度限制的情况下向 tableView 添加一些大小和居中限制...具体来说:

Leading/Trailing 或您喜欢的宽度,在容器内垂直居中以及您将在运行时修改的高度约束。

顺便说一下,我在看你的 stackview 占据了整个屏幕,我觉得你应该遵循通向容器、尾随容器、底部的正常约束space 到容器,顶部 space 到垂直。

想一想,如果您添加这四个约束,无论您在哪个设备上 运行,您的堆栈视图仍将始终水平和垂直居中,因为设置了这 4 个约束将始终确保堆栈视图与超级视图边距保持恒定距离,在您的情况下,对于所有约束

,该距离为 0