Xcode 9 自动布局 X 中央如果没有兄弟

Xcode 9 auto layout X central if no sibling

在Xcode中,当使用自动布局时,我想定位一个按钮,这样如果这个按钮没有同级按钮,那么它应该对齐 X 中心,否则两者可以并排放置。

我试过 yellow.leadingSpace 到 superview >= 20,yellow.alignX 到 superview,但它不起作用,黄色按钮总是在左边。

正如 Uma 已经建议的那样,您可以为此使用 UIStackView。只需将两个按钮添加到 UIStackView 并设置间距即可。您也可以在没有 UIStackView 的情况下使用约束组合来做到这一点:

  1. 向第一个按钮添加水平居中约束。
  2. 将此约束的优先级更改为 750
  3. 在按钮之间添加间距约束。
  4. 当第二个按钮被隐藏时,您需要通过 buttonPaddingConstraint.isActive = false 禁用间距约束。
  5. 如果您再次显示第二个按钮,您需要通过以下方式重新添加间距约束:leftButton.leadingAnchor.constraint(equalTo: rightButton.trailingAnchor, constant: 20).isActive = true

如果您想动画隐藏其中一个按钮,结果取决于使用的方法。 如果您要使用 UIStackView,请查看下图中的 "First Button" 和 "Second Button"。 如果您没有 UIStackView,请查看 "Third Button" 和 "Fourth Button"。

我上传了包含两个选项的 xcode 项目 here