使对象居中,因此垂直约束总是均匀的

Posted

技术标签:

【中文标题】使对象居中,因此垂直约束总是均匀的【英文标题】:centering an object so vertical constraints are always even 【发布时间】:2015-08-25 01:53:57 【问题描述】:

我需要将 UIButton('Call') 置于 UIView(拨号盘)和底部布局指南之间。视图始终对齐中心 x 并对齐中心 y。

所以,我希望视图和通话按钮之间的垂直约束以及通话按钮和底部布局指南始终相等

UIView ('DialPad') 约束

UIButton ('Call') 当前包含在底部布局指南中。我希望它在 UIView 和底部布局指南之间均匀分布

并且情节提要预览显示不同的大小以及呼叫按钮如何不在 UIView 和底部布局指南之间居中。在 4.7" 布局中非常明显

【问题讨论】:

【参考方案1】:

您是否尝试过在运行时也通过约束来执行此操作? ,方法如下: 您将约束设置为当前状态,然后您需要将按钮约束(从按钮到底部布局指南的那个)输出到您的 viewController(您这样做就像您输出任何 UIKit 控件一样) 然后在您的 viewWillAppear 或 viewDidAppear 中您可以编写以下代码:

//here we get the end y point of the dial view . 
CGFloat dialPadYEndPos = self.dialPad.frame.origin.y + self.dialPad.frame.size.height; 
//here we get the space between the dial view and the bottom of the view
CGFloat spaceBetweenViews = self.view.frame.size.height - dialPadYEndPos ; 
//here we get the half of the call button height . 
CGFloat halfBtnHeight = self.Call.frame.size.height/2.0f ;
//then we set the outlet constraint . 
self.bottomConstraint.constant = (spaceBetweenViews/2.0f)-halfBtnHeight ; 
[self.view layoutIfNeeded] ; 

我没有测试过代码,但理论上它应该可以工作。

【讨论】:

谢谢,比尝试使用自动布局更容易【参考方案2】:

你想要这个吗?

我对父视图使用比例宽度/高度。

蓝色视图的宽度限制

高度限制相同。

蓝色视图中按钮的宽度和高度限制

【讨论】:

以上是关于使对象居中,因此垂直约束总是均匀的的主要内容,如果未能解决你的问题,请参考以下文章

如何使用自动布局使两个标签垂直居中

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

垂直位置不明确,约束冲突

ios 6:使用自动布局约束垂直居中 UILabel

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

在自定义表格视图单元格问题中水平/垂直约束