如何使用自动布局将 UIView 定位在其他两个 UIView 的中心?

Posted

技术标签:

【中文标题】如何使用自动布局将 UIView 定位在其他两个 UIView 的中心?【英文标题】:How do I position a UIView at the centre of two other UIViews with Auto Layout? 【发布时间】:2013-11-01 17:34:52 【问题描述】:

我在另外两个 UIView 中间有一个 UIView。假设它们被称为“顶部”、“中间”和“底部”。 “Top”和“Bottom”分别是距离顶部和底部 20pt 的位置。如何将“Middle”垂直定位在“Top”和“Bottom”之间,这样无论是4英寸还是3.5英寸的设备,它总是在另外两个UIView的中间?

【问题讨论】:

到目前为止你在编码方面做了什么?分享您的代码。 我有两种观点。这是一个关于如何做一些我不知道甚至可能的事情的问题。 【参考方案1】:

您需要创建一个隐藏的间隔视图。 (隐藏视图仍然参与布局。)

将垫片的上边缘约束到 Top 的下边缘。将垫片的底部边缘约束到底部的顶部边缘。垫片的宽度和水平位置无关紧要,因此只需以您方便的方式进行设置即可。

然后将 Middle 的 Y 中心约束到 spacer 的 Y 中心。

请注意,您不需要将 Middle 设为垫片的子视图,并且您不需要将任何插座连接到垫片。

【讨论】:

该死的太棒了。谢谢。【参考方案2】:

这应该可行:

[viewMiddle setFrame:CGRectMake(x, y, width, height)];

在哪里

float y = viewTop.frame.origin.y + viewTop.frame.size.height + ((viewBottom.frame.origin.y - viewTop.frame.origin.y - viewTop.frame.size.height)/2) - (viewMiddle.frame.size.height/2);

【讨论】:

这可以使用自动布局吗?现在有些不鼓励使用框架。 对不起,我错过了你的那部分问题 不,你没有,在我意识到我不够具体之后,我将它编辑到标题中。我的错。 :)

以上是关于如何使用自动布局将 UIView 定位在其他两个 UIView 的中心?的主要内容,如果未能解决你的问题,请参考以下文章

隐藏视图时如何使用自动布局移动其他视图?

使用自动布局调整同级视图的大小时,使用子视图重新定位 UIView 不起作用

使用自动布局 Swift 定位 uibutton

自动布局将uiview放在两个uiview的中心[重复]

向使用 SnapKit 定位的 UIView 添加阴影

UIView 没有正确定位启用自动布局的故事板