对于我和我一起工作的其他人来说,这一直是一个持续的问题。XCode 6.1中的自动布局反转约束
有人会认为以下两个限制都会起作用,因为它们实质上是相同的约束条件。
的“结束”的注册和“开始”的登录应该由15分
分开听起来一样
的登录的“开始”和符号“结束”应该做到相隔15分。
但是,有时您必须反转约束才能使其工作。
我应该提交一个雷达还是我们错过了一些东西?
这是在XCode 6.1上,但现在已经有一段时间了(不记得版本)。
对于我和我一起工作的其他人来说,这一直是一个持续的问题。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)
它们的意思不同的东西。换句话说,常数不仅仅是距离的大小,也是方向,所以签名很重要。例如,强制两个视图沿给定轴重叠是非常可能的。
好吧,完全合理。但有时在倒转第一个和第二个项目时,XCode会将常量更改为“恒定”,而有些时候则不会!有没有这种情况应该是预期的行为? – joakim 2014-11-21 11:07:04
我不知道为什么/当Xcode会这样做,什么时候不会。它可能与约束是否匹配画布的当前状态有关。 – 2014-11-21 20:51:44
他们不一样,因为你的常数是15。您需要将第二个约束中的常量更改为-15。
我尽一切努力,我从来没有见过这个问题。你能否提供一个显示这个问题的简单例子,并将其发布到某个地方? – rdelmar 2014-11-21 03:41:59