为什么这种布局约束不能满足?

时间:2016-05-14 14:23:00

标签: ios autolayout nslayoutconstraint

我有两个固定大小(30,30)的UIView,我想在superview中查看水平中心。这是布局描述。

H:[view1(30)]-20-[view2(30)]   
V:|-20-[view1(30)]   
V:|-20-[view2(30)] 

并在水平方向添加约束      view1.leftMargin = view2.rightMargin

但是这些限制并不像我期望的那样有效 运行时警告表示无法同时满足约束。为什么呢?

我找到了一个中心视图的解决方案,它在左侧和右侧添加了两个占位符视图,但我想知道为什么我的第一个解决方案不起作用,如何知道我的约束满足?我错过了什么?

2 个答案:

答案 0 :(得分:0)

view1.left=view2.right[view1(30)]-20-[view2(30)]是有争议的。 [view1(30)]-20-[view2(30)]表示

view1.right+20=view2.left
view1.height=30,view2.height=30

所以苹果不能限制。

答案 1 :(得分:0)

我试图解决你的问题并且知道,使用VFL,在超级视图中居中视图的唯一可行方法是通过间隔视图。

如您所定义,view1view2也定义了两个spacer views

然后粘贴它:

V:|-20-[view1(30)]
V:|-20-[view2(30)]
H:|[spacer1][view1(30)]-20-[view2(30)][spacer1(==spacer2)]|

并且不需要view1.left = view2.right。请删除它。

附加输出:
enter image description here