【问题标题】:AutoLayout: Can we set any margin between views in StackView?AutoLayout:我们可以在 StackView 中的视图之间设置任何边距吗?
【发布时间】:2017-10-02 08:03:32
【问题描述】:

现在我尝试在 StackView 中的视图之间插入一定的边距。但不知何故,我当然没有设置一些限制。所以,我假设一个系统会产生这些意想不到的冲突。但我没有信心,对吗?

情况是这样的。

此冲突的详细信息是second one.top = first one.bottom。 但我从来没有创建过这个约束,但我确实创建了second one.top = first one.bottom + 10。 为什么要创建前一个约束? 这是 StackView 的本质吗? 谢谢。

【问题讨论】:

  • 是的。堆栈视图将为您创建一些约束。您再次添加了一个约束。您不需要为堆栈视图中的视图添加约束。堆栈视图会处理它。如果您需要更改这些内容,请通过属性检查器进行更改。但不要在上面添加更多约束。
  • 谢谢。在这种情况下,stackView 通过属性Spacing 为每个视图的空间添加了一定的约束。那么,如果我想为子视图设置一些不同的边距,即在 viewA 和 viewB 之间设置 10 的距离,在 viewB 和 viewC 之间设置另一个距离 20,这是不可能的吗?对我来说,使用 stackview 似乎是不可能的。
  • 您可以使用堆栈视图间距属性来做到这一点。它将在视图之间提供相等的间距。如果您想要可变间距,请点击此链接:stackoverflow.com/questions/32999159/…
  • 要在视图之间创建可变间距,您应该了解堆栈视图的大多数导入属性,即 UIStackViewDistribution 和 UIStackViewAlignment。如果您不了解它们,请阅读苹果文档:developer.apple.com/reference/uikit/uistackview

标签: ios autolayout


【解决方案1】:

但我确实创建了第二个.top = first one.bottom + 10

您不得为堆栈视图内的对象创建任何约束。堆栈视图的工作是为您创建约束。这就是堆栈视图的。使用堆栈视图的设置,以便它产生您想要的约束并将其中的对象放置在您想要的位置。

【讨论】:

  • 你夸大了这一点。 docs for UIStackView 甚至说“您还可以通过向排列视图添加额外的约束来微调排列视图的外观。例如,您可以使用约束来设置视图的最小或最大高度或宽度。或者您可以定义一个视图的纵横比。”这并非没有警告,但与您的“any”相矛盾。
  • @KenThomases(嗨!)是的,当然我在写作时就想到了这一点。通过在视图上使用 internal 约束,您可以为堆栈视图提供有关如何设置其约束的线索。操作视图的内在内容大小是工具箱中另一个非常重要的补充。尽管如此,在 OP 的情况下,警告仍然成立;我试图非常清楚,堆栈视图是负责制定约束的视图,屏幕截图中显示的冲突情况是 OP 干扰。
  • @matt 虽然我能看懂,但是什么是OP?
  • 你是 OP,原始发帖人——提出问题的人。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-02
  • 2013-11-20
相关资源
最近更新 更多