当标题改变时,UIButton进入动画的起点

pot*_*ato 1 uiviewanimation ios swift

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

self.button.setTitle("hehehe", forState: UIControlState.Normal)
Run Code Online (Sandbox Code Playgroud)

造成了这个问题.这是代码:

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

            self.button.setTitle("hehehe", forState: UIControlState.Normal)
        }
Run Code Online (Sandbox Code Playgroud)

Eri*_*rik 5

您可能希望使用约束来执行动画.首先,设置一个尾随(例如,取决于你希望如何设置动画),如下所示:

在此输入图像描述

我把我的命名命名为myConstraint:

在此输入图像描述

一旦你有了这两个IBOutlets:

    @IBOutlet weak var myButton: UIButton!
    @IBOutlet weak var myConstraint: NSLayoutConstraint!
Run Code Online (Sandbox Code Playgroud)

您可以执行动画并更改文本(我将此代码放在按钮操作中):

// 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)
    }
Run Code Online (Sandbox Code Playgroud)