Swift 文本框在堆栈视图Xcode中拉伸

Swift 文本框在堆栈视图Xcode中拉伸,swift,xcode,user-interface,autolayout,ios-autolayout,Swift,Xcode,User Interface,Autolayout,Ios Autolayout,我在另一个堆栈中有3个堆栈,文本框拉伸太多。我试图给文本框添加hight约束,但它会以红色突出显示,文本框不会收缩(附屏幕截图)。有人能推荐一个解决方案吗 看起来您希望将表单布局为三行。这三行内容不足以垂直填充屏幕,因此您需要决定将多余空间放在哪里,并且需要设置约束以将多余空间放在那里 假设您希望行垂直居中。然后需要将垂直堆栈视图的Y中心约束到根视图的Y中心。不要对垂直堆栈视图的高度或其顶部或底部设置任何其他约束。使其不受约束可以调整自身大小,以完全适合其排列的子视图,而无需拉伸或压缩它们 标签

我在另一个堆栈中有3个堆栈,文本框拉伸太多。我试图给文本框添加hight约束,但它会以红色突出显示,文本框不会收缩(附屏幕截图)。有人能推荐一个解决方案吗


看起来您希望将表单布局为三行。这三行内容不足以垂直填充屏幕,因此您需要决定将多余空间放在哪里,并且需要设置约束以将多余空间放在那里

假设您希望行垂直居中。然后需要将垂直堆栈视图的Y中心约束到根视图的Y中心。不要对垂直堆栈视图的高度或其顶部或底部设置任何其他约束。使其不受约束可以调整自身大小,以完全适合其排列的子视图,而无需拉伸或压缩它们

标签和视图的水平拉伸也不均匀。若要解决此问题,请将所有标签约束为彼此宽度相等。然后将标签的水平内容拥抱优先级设置为251,水平内容压缩阻力优先级设置为750。将文本字段的水平内容包含优先级设置为250(仅小于标签)。这会告诉水平堆栈视图拉伸文本字段,而不是标签,以填充多余的水平空间

结果:

以下是我的文档提纲:


感谢您的回复。我想我稍微更新了你的答案,并将主堆栈视图居中(不是3个水平堆栈),并从主堆栈中删除了顶部和底部约束。看起来主要的问题是我在拉伸主堆栈视图。现在,我仅通过间距控制堆栈之间的间距,并仅使用水平/垂直中心约束让主堆栈自行拉伸。