首页 > 解决方案 > 为什么约束更喜欢调整一个堆栈的大小而不是另一个,你如何改变这种偏好?(xCode)

问题描述

我正在尝试将 xCode 中的约束用于自动布局,但我遇到了问题。此处显示的是应用程序的当前布局: Current Layout。我有两个堆栈,一个在顶部,一个在底部。我已将顶部堆栈的位置限制为粘贴到顶部、左侧和右侧的安全区域,并将底部堆栈的位置限制为粘贴到底部、左侧和右侧的安全区域。我现在想将顶部堆栈限制为等于底部堆栈上方的一些小间距,必要时仅拉伸顶部堆栈,底部堆栈保持完全静止。相反,我得到了相反的结果,底部堆栈冲上去遇到顶部堆栈. xCode 如何选择让底部堆栈拉伸,而不是顶部,我该如何解决这个问题?

这是一个显示我遇到的问题的 gif。请注意,我已将底部堆栈设置为在底部分布,因此它最初似乎没有拉伸,但一旦我从底部切换到填充,您很快就会看到问题:约束问题 Gif

谢谢。

标签: iosxcodeautolayout

解决方案


您正在寻找的自动布局方面是 contentHuggingPriority 和 contentCompressionResistancePriority。这些决定了哪些视图更有可能拉伸或压缩。

将下层栈的垂直 contentHuggingPriority 增加到大于上层栈的垂直 contentHuggingPriority,那么自动布局系统就会使上层栈拉伸。


推荐阅读