如何安排UIStackViews?

时间:2017-02-28 13:22:06

标签: ios uistackview

我正在开始一个支持iOS9向上的新项目,在查看Apple的constraint guidelines之后,他们似乎建议尽可能使用StackView。在阅读了一些文章和苹果文档之后,我对如何创建它们及其好处有了基本的了解,但我仍然不确定何时不使用它们以及如何安排它们。

例如,在下面的视图中我应该使用:

  1. 垂直轴上的一个大型StackView,覆盖整个超级视图。
  2. 三个具有常规约束的StackView将它们彼此固定并与超级视图相连。
  3. 一个覆盖整个超级视图的大型StackView,在该视图中有三个堆栈视图
  4. 没有StackViews,这个视图不适合
  5. 一般来说,我如何决定如何布局我的堆栈视图以及是否使用它们?

    Example View

2 个答案:

答案 0 :(得分:2)

我开始越来越多地使用堆栈视图,特别是从Xcode 8.x开始。您添加的每个堆栈视图都会保存您添加一些自动布局约束(视图中的3个垂直堆叠标签可能需要9个约束,堆栈视图可能只有3个)

如果所有元素都在垂直堆栈视图中,则不太可能需要将其中一个嵌入到另一个中 - 当您在垂直方向内有水平方向时,通常会这样做,反之亦然。所以在上面的例子中,我将从一个大的堆栈视图开始。

在Xcode 7.x中,存在未正确计算UILabel的内在大小的问题。在这些情况下,您可以在尺寸检查器中为每个标签设置占位符内在尺寸。

除了问题,请堆叠!

答案 1 :(得分:1)

我遇到了问题但无法看到您的屏幕截图,但我有一些要点可以帮助您做出决定:

  • 对所有线性排列的视图使用堆栈视图
  • 我更喜欢将根堆栈视图设置为包含没有空格的内容的大小(因此只有在内容大小的情况下才将其限制为超级视图大小)
  • 堆栈视图使用自动布局来确定其子视图的大小,因此您应该验证您的子视图是否确实告诉了它们最合适的大小 - 可能是通过使用intrinsicContentSize()[仅在需要时!](小心)< / LI>
  • 您可以在界面构建器中练习堆栈视图,尝试更改堆栈视图属性,隐藏子视图(使用隐藏属性),并使用约束,这很棒!

祝你好运=] 玩得很开心

相关问题