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
的情况下使用约束组合来做到这一点:
- 向第一个按钮添加水平居中约束。
- 将此约束的优先级更改为
750
。
- 在按钮之间添加间距约束。
- 当第二个按钮被隐藏时,您需要通过
buttonPaddingConstraint.isActive = false
禁用间距约束。
- 如果您再次显示第二个按钮,您需要通过以下方式重新添加间距约束:
leftButton.leadingAnchor.constraint(equalTo: rightButton.trailingAnchor, constant: 20).isActive = true
如果您想动画隐藏其中一个按钮,结果取决于使用的方法。
如果您要使用 UIStackView
,请查看下图中的 "First Button" 和 "Second Button"。
如果您没有 UIStackView
,请查看 "Third Button" 和 "Fourth Button"。
我上传了包含两个选项的 xcode 项目 here。
在Xcode中,当使用自动布局时,我想定位一个按钮,这样如果这个按钮没有同级按钮,那么它应该对齐 X 中心,否则两者可以并排放置。
我试过 yellow.leadingSpace 到 superview >= 20,yellow.alignX 到 superview,但它不起作用,黄色按钮总是在左边。
正如 Uma 已经建议的那样,您可以为此使用 UIStackView
。只需将两个按钮添加到 UIStackView
并设置间距即可。您也可以在没有 UIStackView
的情况下使用约束组合来做到这一点:
- 向第一个按钮添加水平居中约束。
- 将此约束的优先级更改为
750
。 - 在按钮之间添加间距约束。
- 当第二个按钮被隐藏时,您需要通过
buttonPaddingConstraint.isActive = false
禁用间距约束。 - 如果您再次显示第二个按钮,您需要通过以下方式重新添加间距约束:
leftButton.leadingAnchor.constraint(equalTo: rightButton.trailingAnchor, constant: 20).isActive = true
如果您想动画隐藏其中一个按钮,结果取决于使用的方法。
如果您要使用 UIStackView
,请查看下图中的 "First Button" 和 "Second Button"。
如果您没有 UIStackView
,请查看 "Third Button" 和 "Fourth Button"。
我上传了包含两个选项的 xcode 项目 here。