UIStackView 与对齐轴中的 Top Align 发生奇怪的冲突?

问题描述 投票:0回答:1

我有两个顶部对齐的 HStackView(具有红色和绿色背景色)嵌入在 VStackView 中。

如果我为每个 HStackView 添加标签,布局将出现垂直冲突,如下所示: enter image description here enter image description here

如果我向任何 HStackView 添加一个标签,冲突就会消失。(在每个标签上设置不同值的水平内容优先级) enter image description here

我有两个问题:

  1. 我认为 UIStackView 具有内在的垂直尺寸,因为它是最大的 子视图。冲突不应该发生。
  2. 当冲突产生时 如上所述。为什么我再添加一个之后冲突就消失了 给它贴上标签?
uikit uistackview
1个回答
0
投票

您收到“Missing Y Constraints”错误/警告,因为您的布局不明确。

您添加了一个垂直堆栈视图,并告诉自动布局根据其内容排列其子视图。

第一个子视图 - 红色水平堆栈视图 - 有一个默认标签

Vertical Content Hugging Priority: 251

第二个子视图 - 绿色水平堆栈视图 - 也有一个带有默认标签

Vertical Content Hugging Priority: 251

所以垂直堆栈视图说:“嗯......设计师没有告诉我如何分布两个水平堆栈视图,所以我将允许第一个(顶部)堆栈视图垂直拉伸。”

这种行为实际上是未定义的......它实际上可能会或可能不会那样布局。

当您向任一水平堆栈视图添加第二个标签时(让我们使用绿色标签,因为这是您发布的图像),垂直堆栈视图会显示:“好的...设计器有 TWO 子视图,其中

Vertical Content Hugging Priority: 251
底部排列的子视图,并且只有 ONE 子视图与顶部排列的子视图中的
Vertical Content Hugging Priority: 251
...所以我将允许第一个(顶部)堆栈视图垂直拉伸。”

如果您向红色水平堆栈视图添加第二个标签,则垂直堆栈视图将为that排列的子视图提供拥抱优先级,并且它将允许第二个(底部)堆栈视图垂直拉伸。

(设计师)来告诉自动布局每个视图应该有多少内容拥抱(和压缩阻力)。

© www.soinside.com 2019 - 2024. All rights reserved.