我有两个顶部对齐的 HStackView(具有红色和绿色背景色)嵌入在 VStackView 中。
如果我为每个 HStackView 添加标签,布局将出现垂直冲突,如下所示:
如果我向任何 HStackView 添加一个标签,冲突就会消失。(在每个标签上设置不同值的水平内容优先级)
我有两个问题:
您收到“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排列的子视图提供拥抱优先级,并且它将允许第二个(底部)堆栈视图垂直拉伸。
由 你(设计师)来告诉自动布局每个视图应该有多少内容拥抱(和压缩阻力)。