如何更改 UIButton 的宽度约束变化方向?

How do I change the direction in which the width constraint changes for UIButton?

我有以下 UIButtons,我正在尝试让红色 "Start" 按钮在点击时伸长并覆盖蓝色按钮:

我打算拉长“开始”按钮,然后隐藏“保存”按钮。但是,当我尝试这样做时,开始按钮向右拉长。

我在 IB 中设置了带有约束的按钮,因此我正在更改动画块中的约束:

UIView.animateWithDuration(1.0, animations: {

           self.toggleButtonWidth.constant *= 2 //toggleButtonWidth is the width constraint of the red button

           self.view.layoutIfNeeded()

        })

但是,这会导致红色按钮向右拉长并超出屏幕范围:

我想向左拉长。

PS:我知道按钮和它们的布局看起来不漂亮,我仍在尝试在进行设计之前找出功能

将开始按钮固定在右侧(容器尾部 space)。固定右边缘后,按钮可以 "grow" 的唯一位置是在左侧。

您可以尝试的另一件事是摆脱宽度限制,将开始按钮的左侧(引导 space)固定到 容器(即不到保存按钮),然后在动画闭包中减少该约束的常量。像

leadingConstraint.constant = leadingConstraint.constant - saveButton.bounds.size.width

在不知道如何布置自动布局约束的情况下,很难确定最佳路线。

无论您做什么,您都可能需要减少保存按钮的 alpha。否则保存按钮可能在开始按钮 "covers" 时仍然可见。您也可以在动画闭包中通过添加类似 saveButton.alpha = 0 的语句来执行此操作降低其 alpha 只会使其不可见,但是,您可能需要完全隐藏它 (button.hidden = true) 以便用户可以'不小心还是点了它。