繁体   English   中英

自动布局在XCode 6.1中反转约束

[英]Auto Layout Reversed Constraints in XCode 6.1

对于我和与我合作的其他人来说,这一直是一个问题。

有人会认为以下两个约束都有效,因为它们本质上是相同的约束。

注册的“结束”和登录的“开始”应该相隔15分

听起来像是一样的

登录的“开始”和注册的“结束”应该相隔15分。

然而,有时您必须反转约束以使其工作。

我应该提交雷达还是我们遗失了什么东西?

这是在XCode 6.1上,但现在已经进行了一段时间(不记得版本)。

在此输入图像描述

你错过了什么。

约束表达了一个等式:

firstItem.firstAttribute == secondItem.secondAttribute * multiplier + constant

(该等式也可以使用<=或> =而不是==。)

交换项目属性术语不会产生相同的等式。 你必须否定常数来维持意义。 (你还必须除以乘数。)

您的左侧屏幕截图表示:

Sign Up.Trailing == Login.Leading * 1 + 15

您的右侧屏幕截图表示:

Login.Leading == Sign Up.Trailing * 1 + 15

从后者的两边减去15:

Login.Leading - 15 == Sign Up.Trailing * 1

将乘法乘以1:

Login.Leading - 15 == Sign Up.Trailing

交换双方:

Sign Up.Trailing == Login.Leading - 15

以标准约束形式重新表达:

Sign Up.Trailing == Login.Leading * 1 + (-15)

与左侧比较:

 Left side: Sign Up.Trailing == Login.Leading * 1 + 15
Right side: Sign Up.Trailing == Login.Leading * 1 + (-15)

他们的意思不同。

换句话说,常数不仅仅是距离的大小,而且还有方向,因此符号很重要。 例如,强制两个视图沿给定轴重叠是非常可能的。

它们不一样,因为你的常数是15.你需要将第二个约束中的常量改为-15。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM