2016-05-14 211 views
1

我有两个UIView与修复大小(30,30),我想在超视图中的意见水平中心。这里是布局描述。为什么这个布局约束不能满足?

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

,并添加在水平
view1.leftMargin = view2.rightMargin

的限制,但这些限制不工作作为我的期望。
运行时警告说,无法同时不满足约束条件。为什么?

我找到一个解决方案中心的景色,里面加在左侧有两个占位符视图和右侧,但我想知道为什么我的第一个解决方案没有工作,怎么知道我的约束满足?我错过了什么?

+0

垂直或水平或两者? – Alok

+0

@Alok横向,对不起,我修改了这个问题。 – ZHENGYING

+0

k谢谢你的更新,我对H有疑问:| [view1(30)] - 20- [view2(30)] |。请把它作为H:[view1(30)] - 20- [view2(30)]并删除view1.left = view2.right – Alok

回答

0

view1.left=view2.right[view1(30)]-20-[view2(30)]是confict。 [view1(30)]-20-[view2(30)]意味着

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

因此苹果不能让constrainsts。

+0

谢谢!,但我不知道为什么'view1.right + 20 = view2.left'和'view1.left = view2.right'是冲突? – ZHENGYING

+0

这个明显的冲突。 view1.left = view2.right view1.right = view1.left + 30 view2.left = view2.right-30.so你可以知道view1.left + 30 + 20 = view2.right + 30。 confict view1.left = view.right – xks

+0

对不起,我的最后一个约束是'view1.leftMargin = view2.rightMargin',不'view1.left = view2.right',您能不能给这种状况的分析? – ZHENGYING

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

+0

感谢您的正确解决方案,但我知道该解决方案,我只是想知道,为什么我的解决方案约束发生冲突。为什么不满足。如何知道这一点? – ZHENGYING