垂直分布两个水平按钮行

Posted

技术标签:

【中文标题】垂直分布两个水平按钮行【英文标题】:Vertically Distribute Two Horizontal Button Rows 【发布时间】:2019-05-14 18:33:45 【问题描述】:

我正在尝试在 IB XCode 10.2.1 中垂直动态分布两排水平按钮。目前的努力产生了这样的结果: [ 这两行可以用垂直堆栈中的间距值分布,但我希望它根据可用垂直空间的多少来动态垂直分布。

详情: 两个UIStackViews 嵌入在一个垂直的UIStackView 中。作为使其工作的尝试,我还将垂直UIStackView 嵌入到UIView 中,该UIView 已调整到此屏幕截图底部的可用空间(称为“UIStackView”,您可以将其视为专辑标题和底部之间较大的矩形)。垂直UIStackView 中的任何分布选项都不会影响两个水平行的分布。

我是否缺少约束?我最后的手段是根据屏幕大小以编程方式调整垂直堆栈中的间距。

此外,未在下面列出:垂直 UIStackView 的顶部未固定到 UIView 的顶部 - 当我这样做时,我在顶部得到一排,在底部得到一排,当我使用“等间距”时。当在这种情况下但选择“平均填充”时,两行在底部附近非常接近,并且“专辑标题”被拉下以满足它(将专辑标题保持在原位的最佳方法是什么,顺便提一句?)。或许答案真的就在这种情况下,但有不同的约束……

这是结构和约束(顶行和底行具有相同的约束)。:

以下是包含 UIView(“堆栈视图”)的约束:

提前致谢!很多!

【问题讨论】:

堆栈视图很棒,但并不总是适合这项任务。不太清楚您要获得什么...您是否希望两行按钮在专辑标题 > 空间 > 第一行 > 空间 > 第二行 > 空间 > 视图底部之间具有相等的间距? 是的,就是这样! 【参考方案1】:

有几种方法可以做到这一点...可能最简单的方法是使用“间距视图”。

这是 View as: iPhone 8

的布局

使用此布局,我在垂直堆栈视图中包含 3 个红色“间距视图”。它们被设置为彼此相等的高度,最终为您提供相等的垂直“间距”。显然,您需要将背景颜色更改为清除,这样您就看不到它们了。

注意事项:

我给每个按钮的宽度和高度限制为 44

水平堆栈视图使用:

对齐:填充 分布:等间距 间距:0

垂直堆栈视图被限制在视图的前导/尾随/底部 20-pts 处,顶部距离标签底部 20-pts...与:

对齐:填充 分布:填充 间距:0

这是与 View as: iPhone 4s 完全相同的布局,因此您可以看到它的大小是根据需要自行调整的,没有任何更改:

【讨论】:

感谢您的快速回复。我希望这是 StackViews 缺少的东西,但这是一个很好的解决方法。

以上是关于垂直分布两个水平按钮行的主要内容,如果未能解决你的问题,请参考以下文章

水平/垂直均匀分布网格单元?

与边距水平对齐,同时不丢失垂直对齐

Mycat 读写分离+分库分表

水平堆栈视图内的标签宽度相等?

使用按钮检测水平滚动 UIScrollView 上的垂直滚动

如何将四个按钮水平和垂直居中?