【问题标题】:How to keep two views centered using AutoLayout如何使用 AutoLayout 使两个视图居中
【发布时间】:2013-02-21 20:32:22
【问题描述】:

我有两个按钮,我希望将它们作为一个组保持在他们的超级视图中。

以视觉格式表达我想要|-*-[button1]-5-[button2]-*-| 之类的东西,其中* 应该相等并由AutoLayout 自动确定。

我目前有三种解决方法,它们看起来都不是很优雅

  1. 将 UIView 的两个按钮子视图设为该视图的中心

  2. 手动计算*的值,手动更新约束

  3. 将两个按钮与超级视图的中心对齐,并根据按钮宽度手动计算偏移量

还有其他建议吗?

【问题讨论】:

    标签: uikit autolayout


    【解决方案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】:

      您可以将虚拟元素(隐藏视图)居中,然后将每个按钮向左和向右偏移。

      【讨论】:

      • 创建另一个视图是我想要避免的。不过谢谢你的建议。我引导我找到自己的答案,见上文
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-27
      • 1970-01-01
      • 1970-01-01
      • 2014-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多