对于我和与我合作的其他人来说,这一直是一个问题。
有人会认为以下两个约束都有效,因为它们本质上是相同的约束。
"结束"注册和"开始"登录名应分为15分
听起来与
相同"开始"登录和"结束"注册应分为15分。
然而,有时您必须反转约束才能使其有效。
我应该提交雷达还是丢失了什么东西?
这是在XCode 6.1上,但现在已经有一段时间了(不能记住版本)。
答案 0 :(得分:3)
你错过了什么。
约束表达了一个等式:
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)
它们意味着不同的东西。
换句话说,常数不仅仅是距离的大小,还有方向,因此符号很重要。例如,强制两个视图沿着给定轴重叠是非常可能的。
答案 1 :(得分:0)
它们不一样,因为你的常数是15.你需要将第二个约束中的常量改为-15。