ios - 在 View 中安装包含更多 stackview 的 stackview

标签 ios swift autolayout uistackview

我有一个看起来像这样的布局。 View Controller 嵌入在导航 Controller 中,而导航 Controller 又嵌入在选项卡栏 Controller 中,因此 View 同时具有顶部栏和底部栏。

enter image description here

标签和 3 个按钮有高度限制。并且灰色 View 设置了长宽比约束。

标签和灰色 View 嵌入在一个 stackview 中。 3 个红色按钮嵌入在一个 stackview 中。最后,两个 stackview 都嵌入到一个 stackview 中。

包罗万象的 stackview 具有前导、顶部和尾随约束集。

enter image description here

当我在 XS 等屏幕更大的 iPhone 上运行它时,没有任何问题。

enter image description here

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

enter image description here

为了让主 stackview 适合所有 iPhone 的屏幕尺寸,我需要设置什么约束?

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

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

Demo project

最佳答案

问题是因为您没有底部约束,因此方面约束会拉伸(stretch) View ,这将使底部按钮位于选项卡栏下方

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

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

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

3- stackview - 前导、尾随、顶部到中间 View 、底部到 View

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

关于ios - 在 View 中安装包含更多 stackview 的 stackview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57087335/

相关文章:

swift - 为什么我不能在 Swift 3 中打印枚举的案例名称?

ios - 查找适合特定区域的 UILabel 的子字符串

ios - 从日志输出中识别并修复自动布局问题

ios - 如何更改 UIImagePicker 中的导航栏标题?

ios - 如何从 Swift 中的扩展调用函数

ios - 为什么在呈现另一个 Controller 时 UIPresentationController 高度会发生变化?

ios - 如何优化在多个 TableViewCells 内的 UIWebView 中加载大量不同的 HTML 内容?

ios - Autolayout - UIView 不能正确调整到 subview 的大小

ios - Firestore 读取旧数据

ios - 制作一个属于 UIPageViewController 一部分的工具栏