非兄弟姐妹之间的iOS Autolayout约束

时间:2016-01-24 16:43:10

标签: ios autolayout nslayoutconstraint uivisualeffectview

有没有办法在两个不是兄弟姐妹的视图之间定义水平距离约束?我试图在他们的第一个公共超级视图中添加约束,但约束似乎不起作用。

Apple文档说:

  

约束可能只引用视图本身或其子视图。

但我不确定它们是否意味着直接子视图。

理由: 我有一个观点,我想把不同的孩子安排在一起。其中一些孩子应该表现出活力。不幸的是,在iOS中启用或禁用视图的活力是通过将其放在UIVisualEffectView中完成的。因此,为了获得充满活力和非充满活力的视图,我在顶层视图中使用了两个容器 - 一个用于充满活力的视图,另一个用于其余视图。但是,我需要通过约束来相对于彼此排列视觉项目。但由于它们位于不同的容器中,因此我需要约束来处理非兄弟视图。

2 个答案:

答案 0 :(得分:1)

您可以通过按下控制按钮拖动约束线来实现此约束。这是一个例子。

1)不同容器中的两个视图,红色和蓝色,其中红色具有X位置约束,但蓝色不具有它:
enter image description here

{ {3}}
2)按Control按钮,将线条从蓝色拖动到红色,您将看到约束菜单,在这种情况下您应该选择Horizontal Spacing

enter image description here

3)从此菜单中选择Horizontal Spacing,您就完成了:

enter image description here

答案 1 :(得分:1)

除非你想支持仍然在iOS 7上的~3%的用户,否则不要手动为任何视图添加约束:

  

为iOS 8.0或更高版本开发时,请设置约束的活动状态   属性为真。这会自动将约束添加到   正确的观点。

创建一个引用两个视图的约束,确保它们位于相同的视图层次结构中,然后激活它。