比例堆栈视图约束引发数十个冲突

Posted

技术标签:

【中文标题】比例堆栈视图约束引发数十个冲突【英文标题】:Proportional stack view constraints throwing dozens of conflict 【发布时间】:2016-03-24 15:40:59 【问题描述】:

我正在尝试设置一个由图像、文本字段和按钮组成的简单登录视图。我决定使用堆栈视图使情节提要与许多屏幕兼容。

Image of constraints

我可以看到约束有几十个问题!?它们总共加起来是 1.0,这是堆栈视图的总高度,所以我看不到问题。

虽然百分比略有不同,但以下是我想要完成的想法:

Image of conflicts / general design

感谢任何输入,谢谢!

【问题讨论】:

【参考方案1】:

也许您遇到冲突是因为您的堆栈视图的 padding 不为零?

如果您将任何子视图(分隔符除外)的内容拥抱优先级或抗内容压缩优先级设置为 1000(这意味着必需),也可能会引入冲突。

不要将子视图约束到堆栈视图的高度,而是将它们的高度相互约束。选择一个子视图作为基准,并根据基准的高度约束其他子视图的高度。

因此,如果您选择用户名标签的高度作为基准高度,您应该创建如下约束:

Lo​​go.height = 8 × Username.height Spacer1.height = 用户名.height Spacer2.height = 用户名.height UsernameField.height = 2 × Username.height Password.height = 用户名.height PasswordField.height = 2 × Username.height Lo​​gin.height = 2 × Username.height Register.height = 2 × Username.height

【讨论】:

以上是关于比例堆栈视图约束引发数十个冲突的主要内容,如果未能解决你的问题,请参考以下文章

堆栈视图中的自动约束冲突、Swift 2、iOS 9.3、XCode 7

如何在 Xcode 的嵌入式堆栈视图中设置边距而不会出现约束错误?

Xcode 显示冲突的约束

AutoLayout 和 Embedded stackview 约束冲突

堆栈视图中的对齐

如何将间距约束指定为超级视图大小的比例?