根据屏幕高度更改 UIStackView 中项目的高度

Changing the height of items in UIStackView based on Screen height

我用的是最新的UIStackViewsXcode,布局如下:

文本标签
选择器(1 个组件)
文本标签
选择器(1 个组件)
文本标签
选择器(4 个组件)
分段控制(3段)

我有以下 UI 限制条件:

StackViewTop = SafeAreaTop + 8
StackViewLeading = SafeAreaLeading + 8
StackViewTrailing = SafeAreaTrailing - 8
Picker_1 = 96px
Picker_2 = Picker_1 身高
Picker_3 = Picker_2 身高

使用组件的固有尺寸(除了我设置为 96px 的 3 个拾取器)一切都适合 iPhone SE(568px),但是拾取器相当短。在任何其他设备上,有更多的垂直 space 使选择器更高。

当有垂直 space 可用时,我想让三个拾取器将它们的高度增加到它们的固有高度;我无法在 Interface Builder 中找到正确的设置组合来完成这项工作。有办法吗?

这个问题的第二部分是,如果屏幕足够宽,我希望限制堆栈视图的宽度(可能为 512)并居中。

关于你问题的第一部分。

这就是您配置堆栈视图的方式。除了您所做的之外,我还会添加一个大于或等于符号的底部约束。它不会让堆栈视图超出范围。

更新

看了你的 layout 后,我稍微改变了解决方案。

  • 拾取器的高度相等配置方式与您相同。
  • 顶部选择器的高度限制大于或等于 96。如果有足够的空间,它会让自动布局引擎增加它的大小 space。
  • 所有标签和一个段控件都有垂直内容 压缩阻力优先级设置为 1000(必需)。
  • 顶部选择器具有垂直内容压缩阻力 优先级设置为 250(低)。

您可以在此 GitHub repository.
中找到我的实现 这是结果。