适合视图中包含更多堆栈视图的堆栈视图

时间:2019-07-18 04:53:14

标签: ios swift autolayout uistackview

我的布局看起来像这样。 viewcontroller嵌入在导航控制器中,导航控制器又嵌入在标签栏控制器中,因此视图同时具有顶部和底部栏。

enter image description here

标签和3个按钮有高度限制。灰度视图具有长宽比约束集。

标签和灰色视图嵌入在一个stackview中。 3个红色按钮嵌入在一个stackview中。最终,这两个堆栈视图都被嵌入到单个堆栈视图中。

所有包含堆栈的视图都设置了前,后约束。

enter image description here

当我在具有更大屏幕(如XS)的iPhone中运行它时,没有问题。

enter image description here

但是当我在较小的屏幕(如SE)中运行它时,底部隐藏在选项卡栏的后面。

enter image description here

我需要设置什么约束才能使主堆栈视图适合所有iPhone的屏幕尺寸?

我尝试为低优先级的stackview设置一个底部约束,但这似乎也不起作用。

我认为一个原因是我为标签和按钮设置的高度限制。但是我不确定如何设置高度以动态调整大小。

Demo project

1 个答案:

答案 0 :(得分:0)

问题是因为您没有底部约束,所以宽高比约束会拉伸视图,这会使底部按钮在选项卡栏下方

您需要从主堆栈视图中删除顶部标签和middleView并将约束设置为

1-标签-前导,尾随,顶部和高度´´´高度是可选的

2- middleView-前导,尾随,顶部到标签

3- stackview-前导,尾随,从顶部到中间视图,从底部到视图

根据MiddleView的高度,将根据屏幕的高度,如果您希望它为正方形,则将centerX和AspectRatio设置为1替换前导和尾随