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

时间:2014-09-17 18:17:56

标签: ios autolayout storyboard uistackview uilayoutguide

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

enter image description here

2 个答案:

答案 0 :(得分:16)

有很多方法:

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

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

    "V:|[greenView1(==100)]-[layoutGuide1]-[redView(==50)]-[layoutGuide2(==layoutGuide1)]-[greenView2(==greenView1)]|"
    
  • 在早期的iOS版本中,您可以创建两个“空格”视图(UILayoutGuide,而不是使用UIView,而不是使用UILayoutGuide,因此它们不可见)然后定义一个约束它们的高度相同,然后在五个视图(三个圆圈和两个间隔视图)之间定义垂直间距约束,常数为零。

    看起来像是:

    IB scene

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

    这在逻辑上等同于iOS 9中的UIView方法,但UILayoutGuide“spacer”视图只比{{1}}带来更多的开销。但在9之前的iOS版本中,这是解决此问题的常用方法。

答案 1 :(得分:1)

我想出了最简单的方法。

newly added view is in blue color. and in my case label should be in center

请按以下步骤操作:

  1. 在两个圈子之间添加一个视图
  2. 添加其尾随和前导空格。 (在我的情况下为零至superview)
  3. 从圈子中添加顶部和底部空间。
  4. 现在将您的红色圆圈放在最近添加的视图中
  5. 从Alrignment Menu
  6. 水平和垂直居中

    alignment