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