[英]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.