有没有办法为UIButton添加“预处理”?

时间:2016-12-02 17:33:40

标签: ios swift xcode uibutton uiviewanimation

我想在触摸UIButton时添加动画效果。有没有办法在Button被发送到其动作之前运行一个函数?

2 个答案:

答案 0 :(得分:1)

当您开始按下按钮时,会调用以下操作。

@IBAction internal func buttonTouchDown(_ sender: AnyObject)

当您移开手指(点击按钮)时会调用此项。

@IBAction internal func buttonTouchUpInside(_ sender: AnyObject)

所以在第一个动作中你可以开始动画,然后你可以结束动画并完成其余的代码。除非你需要其他手势,否则它应该足够了。

答案 1 :(得分:0)

我没有看到你将触摸事件预处理到按钮的原因。 您可以在ViewController的ViewDidLoad中声明动画,

let animation = CABasicAnimation(keyPath: "position")
animation.duration = 2.0
animation.fromValue = self.testView.layer.position
animation.toValue = CGPoint(x: self.testView.layer.position.x + 100, y: self.testView.layer.position.y)

这里是动画按钮图层的位置属性的动画,你可以修改你觉得动画的属性:)

现在处于按钮的IBAction

self.yourButton.layer.add(animation, forKey: "position")
//this is necessary, you have to set the position again once the animation complete as core animation simply removes the animate object from layer once animation finishes 
self.testView.layer.position = CGPoint(x: self.testView.layer.position.x + 100, y: self.testView.layer.position.y)
//call your method do whatever you wanted to do once button tapped
//example : lemme print my name
print("sandeep")