如何使用 AutoLayout 使两个视图居中
Posted
技术标签:
【中文标题】如何使用 AutoLayout 使两个视图居中【英文标题】:How to keep two views centered using AutoLayout 【发布时间】:2013-02-21 20:32:22 【问题描述】:我有两个按钮,我希望将它们作为一个组保持在他们的超级视图中。
以视觉格式表达我想要|-*-[button1]-5-[button2]-*-|
之类的东西,其中*
应该相等并由AutoLayout 自动确定。
我目前有三种解决方法,它们看起来都不是很优雅
将 UIView 的两个按钮子视图设为该视图的中心
手动计算*
的值,手动更新约束
将两个按钮与超级视图的中心对齐,并根据按钮宽度手动计算偏移量
还有其他建议吗?
【问题讨论】:
【参考方案1】:我认为我过于关注将两个按钮的中心与它们的超级视图对齐。当我开始考虑边缘时,我想出了这个
[NSLayoutConstraint constraintWithItem:button1
attribute:NSLayoutAttributeRight
relatedBy:NSLayoutRelationEqual
toItem:superview
attribute:NSLayoutAttributeCenterX
multiplier:1
constant:-2.5]];
[NSLayoutConstraint constraintWithItem:button2
attribute:NSLayoutAttributeLeft
relatedBy:NSLayoutRelationEqual
toItem:superview
attribute:NSLayoutAttributeCenterX
multiplier:1
constant:2.5]];
这使两个按钮保持在superview
的中心,中间间距为 5。
【讨论】:
【参考方案2】:您可以将虚拟元素(隐藏视图)居中,然后将每个按钮向左和向右偏移。
【讨论】:
创建另一个视图是我想要避免的。不过谢谢你的建议。我引导我找到自己的答案,见上文以上是关于如何使用 AutoLayout 使两个视图居中的主要内容,如果未能解决你的问题,请参考以下文章
Autolayout - 当一个视图具有动态高度时,在 UITableViewCell 中垂直居中两个视图