如何将动画添加到自定义按钮并在按下按钮时调用? [重复]

问题描述 投票:2回答:1

这个问题在这里已有答案:

我创建了一个自定义按钮类,它是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 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()func,只要点击我的按钮?

ios swift xcode uikit
1个回答
0
投票

嗨@SaidAlı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
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.