改变标题时 UIButton 转到动画的起点

UIButton goes to the starting point of animation when title is changed

我正在制作一个按钮,当按下时它会移动一段距离。在它移动了那个距离之后,它应该改变它的标题并停留在那个位置。但是,当动画结束时,它会跳回起点并更改标题。当相同的代码是 运行 而没有按钮更改它的标题时,它工作正常。所以看起来

self.button.setTitle("hehehe", forState: UIControlState.Normal)

导致了问题。 这是代码:

//when button pressed
UIView.animateWithDuration(1, delay: 0, options: .CurveLinear, animations: {
        self.button.center.y -= 50
        }) { _ in

            self.button.setTitle("hehehe", forState: UIControlState.Normal)
        }

您可能希望使用约束来制作动画。首先,像这样设置尾随(例如,取决于您希望如何设置动画):

我将我的命名为 myConstraint:

一旦您拥有这两个 IBOutlets:

    @IBOutlet weak var myButton: UIButton!
    @IBOutlet weak var myConstraint: NSLayoutConstraint!

您可以像这样制作动画和更改文本(我将此代码放在按钮操作中):

// Animate
    UIView.animateWithDuration(1, delay: 0, options: .CurveLinear, animations: {
        self.myConstraint.constant = // the new "length" of the constraint, just test different numbers to understand it
            self.view.setNeedsLayout()
        self.view.layoutIfNeeded()
        }) { _ in
            self.myButton.setTitle("hehehe", forState: UIControlState.Normal)
    }

选项 1,禁用此按钮的自动布局 在 viewDidLoad 中添加它会起作用

self.button.setTranslatesAutoresizingMaskIntoConstraints(true)

选项 2,如 Erik 所说

动画约束