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

Posted

技术标签:

【中文标题】有没有办法向 UIButton 添加“预处理”?【英文标题】:Is there a way way to add a "preprocess" to a UIButton? 【发布时间】:2016-12-02 17:33:39 【问题描述】:

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

【问题讨论】:

您可以添加图像以供选择和正常状态。这样可以指示按下按钮。 【参考方案1】:

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

@IBAction internal func buttonTouchDown(_ sender: AnyObject)

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

@IBAction internal func buttonTouchUpInside(_ sender: AnyObject)

因此,您可以在第一个动作开始动画,然后您可以结束动画并执行其余代码。除非您需要其他手势,否则应该足够了。

【讨论】:

【参考方案2】:

我认为您没有理由将触摸事件预处理为按钮。 您可以在 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")

【讨论】:

这些答案很好!谢谢。 Sandeep,我也在做一些其他的处理。

以上是关于有没有办法向 UIButton 添加“预处理”?的主要内容,如果未能解决你的问题,请参考以下文章

php+mysqli预处理技术实现添加修改及删除多条数据的方法

预处理/预编译 - 用常量替换变量

向 UIButton 添加其他视图

向 UIButton iPhone 添加特定的触摸事件

在 UILabel 和 UIButton 之间拆分单元格的全部内容

有没有办法在自定义 UIButton 中调用 TouchUpInside 操作?