在其他两个之间垂直居中视图

Posted

技术标签:

【中文标题】在其他两个之间垂直居中视图【英文标题】:Vertically center view between two others 【发布时间】:2017-05-30 10:38:17 【问题描述】:

我想知道如何使用约束将一个对象垂直居中于另外两个对象之间。我使用故事板。标签和按钮具有使用自动布局的约束(标签:顶部、前导、尾随、高度;按钮:底部、前导、尾随、纵横比)。

这就是所有的样子:

我希望约束 1 和 2(看一下图像)的长度相同,以便“视图”在“标签”和“按钮”之间垂直居中。在较小的屏幕尺寸中,放置具有相同高度的隐藏视图对我不起作用。 谢谢!


PS:一件重要的事情是:我希望视图居中,并且不是所有元素都等距!

【问题讨论】:

Nishant 答案即使对于可变标签和按钮大小也适用。但在您的情况下,标签和按钮具有恒定的高度。所以添加垂直中心约束,然后调整它的常量以匹配中心就可以了。在这种情况下,常量值 = (标签顶部空间 + 高度) - (按钮底部空间 + 高度) / 2。这样可以避免多出一个视图。 【参考方案1】:

采用顶部约束 0 到顶部视图(标签)和底部约束 0 到底部视图(按钮)的透明视图。现在将要垂直居中的视图添加到两个视图中。并将其作为水平和垂直中心的约束添加到父视图。

【讨论】:

【参考方案2】:

您可以在此处尝试 stackview。将所有项目放入堆栈视图并提供相等的间距

【讨论】:

以上是关于在其他两个之间垂直居中视图的主要内容,如果未能解决你的问题,请参考以下文章

android 代码中设置控件的垂直居中和两个控件之间的距离。

在 IOS 中使用自动布局在邻居之间居中视图

使用 NSLayoutConstraint 垂直居中两个视图

如何垂直居中两个视图并相对于超级视图平均划分宽度?

限制在超级视图中水平和垂直居中阻止我更改框架

Autolayout - 当一个视图具有动态高度时,在 UITableViewCell 中垂直居中两个视图