我的设计要求按钮位于其他两个对象之间。其中一个对象位于视图的垂直中心(绿色)。另一个对象距离底部边缘有一段距离(绿色)。现在的任务是将第三个对象(红色)置于其他两个对象之间。我正在使用 xcode6 的新约束,并且我的视图处于 wRegular hRegular 模式。使用代码这很容易,但我正在尝试使用情节提要来完成此操作。

我的设计要求按钮位于其他两个对象之间。其中一个对象位于视图的垂直中心(绿色)。另一个对象距离底部边缘有一段距离(绿色)。现在的任务是将第三个对象(红色)置于其他两个对象之间。我正在使用 xcode6 的新约束,并且我的视图处于 wRegular hRegular 模式。使用代码这很容易,但我正在尝试使用情节提要来完成此操作。

有多种方法:
在 iOS 9 中,最简单的方法是定义一个UIStackedView具有distribution“等间距”的垂直,然后addArrangedSubview是三个圆形子视图
iOS 9 中的另一个选项是创建两个UILayoutGuide(这将代表图像中的两个问号),将它们添加到共享的超级视图中,并将它们addLayoutGuide定义为彼此相同的大小。相应的 VFL 可能如下所示:
"V:|[greenView1(==100)]-[layoutGuide1]-[redView(==50)]-[layoutGuide2(==layoutGuide1)]-[greenView2(==greenView1)]|"
UILayoutGuide在早期的 iOS 版本中,您可以创建两个“空间”视图(UIView背景清晰,因此它们不可见),而不是使用,然后定义一个约束,使它们的高度相同,然后定义五个视图之间的垂直间距约束(三个圆圈和两个间隔视图),常数为零。
它可能看起来像:

我已经让那些“间隔”视图可见,以说明这个想法,但显然你会将它们设置为透明的,这样你就无法在 UI 中看到它们。
这在逻辑上等同UILayoutGuide于 iOS 9 中的方法,只是UIView“间隔”视图的开销比UILayoutGuide. 但在 iOS 9 之前的版本中,这是解决此问题的常用方法。