矛盾的是iOS运行时约束错误

时间:2015-06-25 05:52:21

标签: ios xcode autolayout nslayoutconstraint

我在运行时遇到不可满足的约束错误(iOS 8.3,XCode 6.3,iPad Air模拟器),但错误本身与我在View Hierarchy调试器中观察到的数据相矛盾。

运行时错误:

<form id="form1" runat="server">
        <div data-ng-controller="dashboardController">
            {{message}}
        </div>
</form>

在Visual Hierarchy调试器中,我选择上面列出的约束并在对象检查器中查看它们。在这里他们是有序或外观:

"<NSLayoutConstraint:0x7fd7b96a8e30 V:[PushDownView:0x7fd7b96a8890(100)]>",
"<NSLayoutConstraint:0x7fd7b943fa00 V:[UIView:0x7fd7b943f7d0(80)]>",
"<NSLayoutConstraint:0x7fd7b96ac9a0 V:|-(0)-[PushDownView:0x7fd7b96a8890]   (Names: '|':UIView:0x7fd7b943f7d0 )>",
"<NSLayoutConstraint:0x7fd7b96ad3a0 PushDownView:0x7fd7b96a8890.bottom == UIView:0x7fd7b943f7d0.bottom>"

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x7fd7b96a8e30 V:[PushDownView:0x7fd7b96a8890(100)]>

查看约束Address: 0x7fd7b96a8e30 First Item: PushDownView Relation: Equal Multiplier: 1 Constant: 100 Priority: 76 Address: 0x7fd7b943fa00 First Item: UIView Relation: Equal Multiplier: 1 Constant: 100 Priority: 76 Address: 0x7fd7b96ac9a0 First Item: PushDownView Relation: Equal Multiplier: 1 Constant: 0 Priority: 76 Address: 0x7fd7b96ad3a0 First Item: PushDownView Relation: Equal Multiplier: 1 Constant: 0 Priority: 76 - 错误声称它将UIView的高度设置为80.但是对象检查器声称常量为100.

据我所知,我在代码中设置为100(但我可能会弄错,所以让我们坚持这里的事实)。

我在这里缺少什么?为什么错误和Visual Hierarchy检查器的值不同?

1 个答案:

答案 0 :(得分:0)

我看到你的约束的下一个问题:

2. "<NSLayoutConstraint:0x7fd7b96ac9a0 V:|-(0)-[PushDownView:0x7fd7b96a8890]   (Names: '|':UIView:0x7fd7b943f7d0 )>", 

- 你设置了&#39;身高&#39;到100

3. "<NSLayoutConstraint:0x7fd7b96ad3a0 PushDownView:0x7fd7b96a8890.bottom == UIView:0x7fd7b943f7d0.bottom>" 

- 以下限制条件告诉我们&#39; pin&#39;查看超级视图的顶部

redis = Redis.new
redis.set("key", data1)

- 如您所见,此约束将PushDownView固定在UIView底部的底部。

我们现在在这3个约束之间存在冲突 - 当uiview尝试布局子视图时,它会导致。

删除高度限制或删除最后一个约束 - 这取决于你想要什么 - 如果你想要PushDownView缩放 - 首先删除,如果你需要固定高度 - 删除第三个