StackView并非在所有屏幕尺寸上均显示正确

时间:2018-09-17 10:44:53

标签: swift autolayout uistackview

我有一个包含堆栈视图的ViewController。在该堆栈视图中,还有3个堆栈视图。第一个包含3个标签,第二个包含更多具有按钮和标签的堆栈视图,第三个包含2个按钮和一个标签。底部有一个按钮。在屏幕尺寸为4,7“及更大的屏幕上,布局都很好。但是,当屏幕尺寸较小时,它会切出顶部的堆栈视图。我试图对前导,尾随,顶部和底部的各种变化(使用且没有顶部和底部约束),但我无法使其正常工作。我已附上了不同屏幕类型的屏幕截图。

Screen size 4,7"

Screen size 4"

编辑*根据上一个ViewController的选择,中间的Stack View(带有复选框的那个)可以是isHidden。隐藏时,视图是正确的。 / p>

2 个答案:

答案 0 :(得分:0)

通常,您不会在UIStackView上设置高度。它们取决于它的内容。这将导致您的stackview超出屏幕高度。您是否使用过视图层次结构?如果要覆盖小型电话,可以将主stackView放在scrollView内,以仍然能够查看所有内容。

答案 1 :(得分:0)

在不查看对视图施加的约束的情况下很难诊断正在发生的事情,但是我向您推荐一些可能会有所帮助的事情:

  • 使用尺寸类别在视图之间设置间隔,以便您可以根据屏幕尺寸设置合适的位置,并避免与以下视图重叠。

enter image description here

  • 如果要这样做,请不要为任何stackView设置高度限制。
  • 要对齐顶部StackView,我不仅会在顶部栏上使用顶部约束(类型大于或等于),还会在垂直中心使用带有右乘子的约束(具有较高的优先级)。这样,您可以确保顶部堆栈视图与屏幕尺寸成比例地垂直对齐,并在顶部约束条件下确保stackView不会隐藏在顶部栏下方。
  • 确保隐藏正确的stackView。