如何在UIStackView

时间:2017-07-02 17:43:25

标签: ios autolayout uistackview

我在垂直UILabel内有UITableViewUIStackView。我希望这个堆栈视图始终保持居中,即使元素被添加到表视图中也是如此。

现在我在堆栈视图中添加了Horizontal in ContainerVertical in Container约束。但它仍然表示堆栈视图缺少Y约束。如果我添加一个,那么它将不再居中。

知道我应该添加哪些约束以使其始终居中?

这里有两个屏幕截图,包括我想要的堆栈视图和一个我现在拥有的视图:

enter image description here

enter image description here

第二张图片我从堆栈视图到标题添加了一个垂直空间约束,这就是为什么它看起来像。

2 个答案:

答案 0 :(得分:2)

mmm ...前一段时间我从客户端收到了同样的请求,事实是表格视图并不意味着像这样使用,因为如果添加太多项目,表格将会在垂直方向上增长方向和那不是很好......但是!据我所知,你的单元大小都是一样的,这就是我所做的,因为我的表有一些有限的行数,所有行都是相同的大小:

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

您想要的前导/尾随或宽度,在容器内垂直居中,以及您将在运行时修改的高度约束。

答案 1 :(得分:0)

顺便说一下,我看着它你的堆栈视图占据了整个屏幕,我觉得你应该采用导致容器的正常约束,追踪到容器,底部空间到容器,顶部空间到垂直。

考虑一下,如果你添加这四个约束,你的堆栈视图仍将始终水平和垂直居中,无论你在哪个设备上运行它,因为设置这4个约束将始终确保stackview维护与超视图边距的距离恒定,在所有情况下,所有约束都为0