使用自动布局使 3 个 UIbuttons 居中对齐

keep 3 UIbuttons center aligned using autolayout

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

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

if I hide Middle button

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


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

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

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

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

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

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

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

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

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

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

只需查看@Usama 接受的答案:

这是Sample Code

示例代码输出:

感谢:Usama