基于屏幕高度改变UIStackView项目的高度

基于屏幕高度改变UIStackView项目的高度

问题描述:

我使用UIStackViews在最新的Xcode,布局如下所列:基于屏幕高度改变UIStackView项目的高度

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

我有以下UI约束TS:

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),但拾取器相当短。在任何其他设备上,有更多的垂直空间使捡拾器更高。

我希望在有垂直空间时,三位捡拾者将他们的身高增加到他们的固有身高;我无法在界面生成器中找到正确的设置组合来完成此项工作。有没有办法做到这一点?

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

+0

你到目前为止试过了什么?你有什么限制,为什么他们不工作? –

说到问题的第一部分。

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

StackView configuration

更新

layout考虑看看后,我改变了解决一点点。

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

你可以在这个GitHub repository找到我的实现。
这是结果。

enter image description here

+0

卡米尔,感谢您的参与,我一直在玩压缩阻力。您所建议的设置仍然不会满足我期待的要求。如果有问题,我正在运行Xcode 9.1 Beta。

拾取器没有变得更高。

这里是我所得到的 ![画面](https://www.dropbox.com/s/8ov5hh4c6jtot0e/Screenshot%202017-10-07%2008.10.18.png?dl=0) –

+0

大卫,我几乎复制了您的布局在侧面项目和Xcode 9(稳定)它看起来像这[截图](https://raw.githubusercontent.com/kamil-szostakowski/stack-overflow/master/stackview-pickers/ StackOverflow的/ Screenshot.png)。我把它推到[GitHub](https://github.com/kamil-szostakowski/stack-overflow/tree/master/stackview-pickers/StackOverflow),所以请随时去看看。 –

+0

谢谢,我想出了我的问题。我隐藏了主StackView的一部分,并且有一个将大小拉到0的约束。 –