您是否可以在另一个约束被破坏的情况下制定一个或多个布局约束? (处理重叠的视图)

时间:2014-09-22 04:05:49

标签: cocoa autolayout

我有许多垂直排列的(动态)视图。为了这个例子,让我们说它们根据它们与顶部边缘的距离与它们的超视图的中心对齐,如下所示:

Original layout

现在情况可能是这两个视图垂直重叠:

Overlapping layout

当视图重叠时,我想在水平面上移动它们,使它们不再重叠。

这可以通过检查每个布局后是否有重叠来实现,并动态添加约束(如果有),但我想知道是否有办法做到这一点,可以设置一次然后会自动发生当意见重叠时。


例如,手动执行此操作的一种方法是添加下面显示的约束:

Desired layout

换句话说,我可以添加三个额外的约束:

  • 一个,棕色,固定视图之间的最小水平距离
  • 两个,黄色,表示视图与其superview的中心X之间的间距必须相等

(这个特殊的解决方案不会很好地扩展到两个以上的视图,但我对这里的概念验证感兴趣。)


采用上面的简单双视图示例,是否有任何方法可以添加我建议的水平约束(或者实际上,任何其他约束集)一次,并在视图重叠时使它们生效?

换句话说,在某种意义上,我想让它们在顶视图的下边缘和底视图的上边缘之间的垂直距离上是有条件的。


TL;博士

你能否根据另一个约束条件制定一个布局约束(关于该约束的值,或者该约束被破坏)?

0 个答案:

没有答案