【问题标题】:keep 3 UIbuttons center aligned using autolayout使用自动布局保持 3 个 UIbuttons 居中对齐
【发布时间】:2016-07-16 13:37:26
【问题描述】:

我有一个 UIView 和 3 个 UIButtons,我想要的是当我隐藏一个按钮时,我希望其他两个按钮以相等的边距居中对齐。假设如果有 3 个按钮,UI 应该是 Like

If there are 3 buttons
---------------
[   ][   ][   ]
---------------

if I hide Middle button

---------------
  [   ][   ]
---------------


if I hide 2 buttons
---------------
     [   ]
---------------

是否可以使用自动布局?如果是,请指导正确的方法。

【问题讨论】:

  • 如果你的目标是 iOS 9 及更高版本,你可以只使用 UIStackView
  • 我也需要对 iOS 8 的支持
  • @Fonix : 对于这个特定的要求,UIStackview 会增加内存使用吗?
  • 是的,这可以通过自动布局实现,方法是创建按钮的前导和尾随约束的出口。根据 or 标准以编程方式调整前导和尾随约束。
  • @Ujjwal 不显着,UIStackViews 显然很轻,比使用 UIView + 约束更轻

标签: ios objective-c uibutton ios-autolayout


【解决方案1】:

只需查看@Usama 接受的答案:Align Three UIButton using Auto Layout

这里是Sample Code

示例代码输出:

感谢:Usama

【讨论】:

    【解决方案2】:

    大多数事情都可以通过自动布局实现,但并不总是那么容易。

    这是我要尝试的(我在这里只关注水平排列 - 您当然需要为垂直排列添加约束,但这应该很容易):

    1. 创建一个 UIView 作为一个容器来保存按钮。
    2. 将此容器视图限制为在主视图中水平居中。
    3. 将 3 个按钮放置在容器视图中: 一种。在所有按钮上设置宽度限制。 湾。将第一个按钮约束到容器前导。 C。将第一个按钮尾随限制到第二个按钮前导,无论您想要多少间距。 d。将第二个按钮尾随约束到最后一个按钮前导,与 c 中的间距相同。 e.将最后一个按钮尾随限制为容器尾随。
    4. 为按钮宽度约束和间距约束创建插座 c.和 d。以上。

    现在,要隐藏任何按钮,请将其宽度约束常量设置为 0,并将其最近的间距约束设置为 0。(中间按钮的任一侧都有间距约束 - 选择一个设置为 0,无论哪个都没有关系。 )

    要重新显示按钮,请将约束常量设置回其原始值。

    【讨论】:

      【解决方案3】:

      一种方法是为每个按钮添加宽度约束,并在相应按钮隐藏时将其常量和前导约束常量设置为零。

      另一种方法是删除不必要的约束并在每次更改时添加新的约束。

      你应该记住隐藏视图仍然在自动布局过程中起作用。

      【讨论】:

      • 将宽度约束设置为零可以让您关闭,但您还必须处理按钮之间的填充。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      • 1970-01-01
      相关资源
      最近更新 更多