iOS自动布局将我的视图置于两个视图之间

bri*_*dir 68 interface-builder ios autolayout

如何在Interface Builder中设置autolayout以垂直排列视图,如图所示:

方案

Top view固定在屏幕顶部边缘,Bottom view固定在屏幕底部边缘.My view应该在顶视图和底视图之间居中(距离Top view等于距离Bottom view)

Fog*_*ter 106

这样做的方法是在可见视图之间有2个不可见的"间隔"视图.

你不能让空间有相同的高度.但是你使用"spacer"视图并将它们放在你的视图之间(与周围视图有0个间隙).

然后你给这些视图提供相同的高度,他们会将你的视图推向中心,My View并与the Bottom ViewTop View.

就像这样......

V:|[Top View][spacer1][My View][spacer2(==spacer1)][Bottom View]|
Run Code Online (Sandbox Code Playgroud)

编辑 - 另一种方式

我只是想到了另一种方法.你可以有一个无形的容器UIView是之间Top ViewBottom View没有差距.

然后放置My View在这个不可见的视图内并垂直居中.

  • 那可行.除了这不是问题所在.问题中的图像清晰地显示了不同高度的顶视图和底视图.此外,它要求在两个视图之间准确地居中视图.它没有要求在其超级视图中将视图居中. (5认同)
  • 我只是用你的另一种方式,非常容易设置谢谢! (2认同)

ana*_*y_v 32

另一个解决方案是在顶视图botom视图之间添加一个不可见的视图,并将我的视图放在该视图的中心:

以UIView为中心


bri*_*dir 8

(5年后)我找到了最规范的解决方案:

UILayoutGuide 是专门为解决这类任务而引入的(自iOS 9起).

使用布局指南替换您可能已创建的虚拟视图,以表示用户界面中的视图间空间或封装 - 参考文档

它在代码中工作得很好,但不幸的是Interface Builder不支持自定义布局指南.