ios - 如何将动画添加到自定义按钮并在点击按钮时调用?

标签 ios swift xcode uikit

<分区>

我创建了一个自定义按钮类,它是 UIButton 的子类, 并编写一个 UIButton 扩展。

这是我的扩展:

extension UIButton {

    func setButtonCurvy() {
        self.layer.cornerRadius = self.frame.size.height/2
    }

    //This function should be run when button tapped
    func buttonTapped(_ completion: @escaping () -> Void) {

        let anim = CASpringAnimation(keyPath: "transform.scale")
        anim.fromValue = 0.9
        anim.toValue = 1.1
        anim.timingFunction = CAMediaTimingFunction(name: .easeIn)
        anim.autoreverses = true
        anim.repeatCount = 0
        anim.duration = 1

        self.layer.add(anim, forKey: nil)
        DispatchQueue.main.asyncAfter(deadline: .now() + 0.9) {
            completion()
        }
    }
}

我的类(class)是:

class MyButton: UIButton {
    //Customize buttons...
    override func awakeFromNib() {

        self.setButtonCurvy()
        self.backgroundColor = UIColor.mainButtonColor()
        switch self.tag {
        case 1:
            self.titleLabel?.font = UIFont(name: "Mostley Script", size: 23)
            break
        case 2:
            self.titleLabel?.font = UIFont(name: "Mostley Script", size: 20)
            break
        default:
            self.titleLabel?.font = UIFont(name: "Mostley Script", size: 38)
            break
        }
    }

}

所以这是我的问题,我在文档中找不到,并提出了问题。也许我只是错过了一些明显的东西。 有什么方法可以在我的按钮被点击时调用 buttonHitted() 函数吗?

最佳答案

您好@Said Alır,@AtulParmar 的回答很好,但如果您只需要在特定类型的事件(例如(touchUpInside))的情况下制作动画,请尝试以下解决方案。

import UIKit
class MyButton: UIButton {

    override func awakeFromNib() {
        super.awakeFromNib()

        self.addTarget(self, action: #selector(MyButton.touchUpInside), for: .touchUpInside)
    }
    @objc func touchUpInside() {
        //Perform you animations here
    }
}

关于ios - 如何将动画添加到自定义按钮并在点击按钮时调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54552666/

相关文章:

ios - 无法使用新框架构建项目

ios - 在 Swift UI 中停止旋转动画

ios - 如何表示框架中发生的崩溃?

xcode - 在 Xcode 中使用库时出现问题

ios - 使用 UserDefaults 保存和检索 bool 值

iphone - iOS View "redirect"

ios - 如何在ARKit中对SCNNode施加力量?

ios - 应用内购买 : list of product identifiers is always empty

iOS 库或 DIY Etsy 之类的类别控制?

ios - 在 iOS 上,当前图形上下文和上下文堆栈是应用程序单例的一部分吗?