对两个对象之间的居中和对象的约束

Joe*_*ina 11 storyboard ios autolayout uistackview uilayoutguide

我的设计要求按钮在两个其他对象之间居中.其中一个对象位于视图的垂直中心(绿色).另一个物体距底边有一定距离(绿色).现在的任务是将第三个对象(红色)置于其他两个对象之间.我正在使用xcode6的新约束,我的视图处于wRegular hRegular模式.这对于代码来说很容易,但我正在尝试使用故事板来实现这一目标.

在此输入图像描述

Rob*_*Rob 16

有很多方法:

  • 在iOS 9中,最简单的方法是定义一个"等间距" 的垂直UIStackedView,distribution然后addArrangedSubview是三个圆形子视图

  • iOS 9中的另一个选项是创建两个UILayoutGuide(表示图像中的两个问号),将它们添加到共享的超级视图中,addLayoutGuide并将它们定义为彼此相同的大小.相应的VFL可能如下所示:

    "V:|[greenView1(==100)]-[layoutGuide1]-[redView(==50)]-[layoutGuide2(==layoutGuide1)]-[greenView2(==greenView1)]|"
    
    Run Code Online (Sandbox Code Playgroud)
  • 在早期的iOS版本中,UILayoutGuide您可以创建两个"空间"视图(UIView具有清晰的背景,因此它们不可见),然后定义约束,使其高度相同,然后在五个视图之间定义垂直间距约束(三个圆和两个间隔视图)的常数为零.

    它可能看起来像:

    IB场景

    我已经将这些"间隔"视图显示出来,以说明这个想法,但显然你会将它们设置为透明,这样你就无法在UI中看到它们.

    这在逻辑上等同UILayoutGuide于iOS 9中的方法,除了UIView"spacer"视图只比a带来更多的开销UILayoutGuide.但在9之前的iOS版本中,这是解决此问题的常用方法.

  • 你可以用一个垫片做到这一点.将垫片的顶部固定到上部绿色圆圈的底部.将垫片的底部固定到下部绿色圆圈的顶部.将红色圆圈的垂直中心固定到垫片的垂直中心. (4认同)