Пользовательский класс UIButton с анимацией Swift - PullRequest
0 голосов
/ 03 июля 2018

Можно ли создать класс UIButton с анимацией onclick , которая автоматически вызывает каждый раз, когда пользователь касается кнопки?

import UIKit

class AnimatedButton: UIButton {

@objc private func buttonClicked(sender: UIButton) {
    sender.transform = CGAffineTransform(scaleX: 0.6, y: 0.6)

    // animation ...

    }
}

Поэтому я не хочу создавать действие в ViewController, в котором должна вызываться button.buttonclicked (). Это должно происходить автоматически каждый раз, когда я использую этот класс.

Есть ли возможность сделать что-то подобное?

Ответы [ 2 ]

0 голосов
/ 03 июля 2018

Ниже кода, когда вы нажимаете на кнопку, он вызывает метод animate и выполняет анимацию. Если вы хотите выполнить анимацию для кнопки, просто назначьте класс AnimatedButton как пользовательский класс UIButton:

class AnimatedButton: UIButton {

    override func draw(_ rect: CGRect) {

        self.addTarget(self, action: #selector(animate), for: .touchUpInside)
    }

    @objc func animate() {

        self.transform = CGAffineTransform(scaleX: 0.6, y: 0.6)

    }
}
0 голосов
/ 03 июля 2018

Вы можете сделать что-то вроде ниже, просто замените событие, которое вас когда-либо заинтересовало.

class AnimatedButton: UIButton {

    override func awakeFromNib() {
        super.awakeFromNib()
        self.addTarget(self, action: #selector(AnimatedButton.buttonClicked(sender:)), for: .touchUpInside)
    }

    @objc private func buttonClicked(sender: UIButton) {
        sender.transform = CGAffineTransform(scaleX: 0.6, y: 0.6)
        // animation ...
    }
}
...