如何从左到右和反向动画UIButton帧

时间:2016-10-09 11:15:14

标签: ios swift

我目前的方法是将按钮添加为子视图:

let button = UIButton(frame: CGRect(x: 0, y: 0, width: 0, height: 60))
button.setTitle("Add", for: .normal)
buttonView = UIView(frame: CGRect(x: 0, y: 0, width: 0, height: 60))
buttonView.backgroundColor = .black
button.addSubview(buttonView)

然后设置视图宽度的动画:

UIView.animate(withDuration: 0.3, delay: 0.0, options: .curveEaseIn, animations: {
    self.buttonView.frame = CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: 60)
    }, completion: nil)

我不喜欢这个是按钮标题保持静态。我希望它成为动画的一部分。

我也尝试设置按钮框架的动画,但它似乎不起作用。没有任何事情发生 我的按钮已添加到UITextField inputAccessoryView,因此我不确定这是否是问题所在。

有任何建议我如何正确设置按钮的动画效果?

1 个答案:

答案 0 :(得分:1)

您不需要为UIButton添加额外的子视图,以便为其框架设置动画。

尝试在动画和动画关闭内添加layoutIfNeeded():

let button = UIButton(frame: CGRect(x: 0, y: 0, width: 60, height: 60))
button.setTitle("Add", for: .normal)
button.setTitleColor(UIColor.green, for: .normal)
button.backgroundColor = UIColor.black

view.addSubview(button)
button.layoutIfNeeded()

UIView.animate(withDuration: 3, delay: 0.0, options: .curveEaseIn, animations: {
    button.frame = CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: 60)
    button.layoutIfNeeded()
    }, completion: nil)

希望这有帮助。