首页 > 解决方案 > 在视图中适合包含更多堆栈视图的堆栈视图

问题描述

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

在此处输入图像描述

标签和 3 个按钮有高度限制。并且灰色视图具有纵横比约束集。

标签和灰色视图嵌入在一个堆栈视图中。并且 3 个红色按钮嵌入在一个堆栈视图中。最后,stackview 和嵌入在单个 stackview 中。

包罗万象的堆栈视图具有前导、顶部和尾随约束集。

在此处输入图像描述

当我在像 XS 这样具有更大屏幕的 iPhone 上运行它时,没有问题。

在此处输入图像描述

但是当我在 SE 等较小的屏幕上运行它时,底部会隐藏在标签栏后面。

在此处输入图像描述

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

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

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

演示项目

标签: iosswiftautolayoutuistackview

解决方案


问题是因为您没有底部约束,因此方面约束会拉伸视图,这将使底部按钮位于标签栏下方

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

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

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

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

根据上面 middleView 的高度将根据屏幕的高度,如果你希望它是正方形的,那么将前导和尾随替换为 centerX 和 aspectRatio 为 1


推荐阅读