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

时间:2017-10-06 20:11:30

标签: ios xcode interface-builder uistackview

我在最新的Xcode中使用UIStackViews,布局如下:

文字标签
选择器(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),但是拾取器相当短。在任何其他设备上都有更多的垂直空间可以使拾音器更高。

当有垂直空间时,我希望三个采摘器的高度增加到它们的固有高度;我无法在Interface Builder中找到正确的设置组合来使其工作。有没有办法做到这一点?

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

1 个答案:

答案 0 :(得分:1)

关于问题的第一部分。

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

StackView configuration

<强>更新

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

  • 拣货员的高度相等配置与您的配置相同。
  • 顶部选取器的高度约束大于或等于96.如果有足够的空间,它将让自动布局引擎增加它的大小。
  • 所有标签和细分控件都有垂直内容 压缩阻力优先级设置为1000(必需)。
  • 顶部拣选器具有垂直内容抗压性 优先级设置为250(低)。

您可以在此GitHub repository中找到我的实施 结果如下。

enter image description here