iOS non-siblings 之间的自动布局约束

iOS Autolayout constraint between non-siblings

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

Apple 文档说:

The constraint may only reference the view itself or its subviews.

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

理由: 我有一个视图,我想把不同的 children 放在哪里并安排它们。其中一些 children 应该显示有活力的效果。不幸的是,在 iOS 中启用或禁用视图的活力是通过将其放置在 UIVisualEffectView 中来完成的。因此,为了混合使用充满活力的视图和 non-vibrant 视图,我在顶级视图中使用了两个容器 - 一个用于充满活力的视图,另一个用于其余视图。但是,我需要在约束条件下相对于彼此排列视觉项目。但由于它们位于不同的容器中,我需要约束才能为 non-sibling 视图工作。

您可以通过按住控制按钮拖动约束线来创建此约束。这是一个例子。

1) 不同容器中的两个视图,红色和蓝色,其中红色有 X 位置约束,但蓝色没有:




2) 按下Control按钮,将线从蓝色拖到红色,你会看到约束菜单,在这种情况下你应该select Horizontal Spacing



3) 从这个菜单中选择 Horizontal Spacing,你就完成了:

除非您想支持仍在使用 iOS 7 的约 3% 的用户,否则不要手动向 any 视图添加约束:

When developing for iOS 8.0 or later, set the constraint’s active property to true instead. This automatically adds the constraint to the correct view.

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