Реализация одной и той же функции для разных объектов - PullRequest
0 голосов
/ 17 декабря 2018

Код для начинающих и обучение Swift.Я хочу, чтобы эта функция была применима для обеих кнопок UIB, и не могу понять, как это сделать для второй кнопки.

private lazy var boostButton: UIButton = {
    let button = UIButton(type: .custom)

    button.frame = CGRect(x: 10, y: 10, width: 80, height: 80)
    button.setImage(UIImage(named: "simsek.png"), for: .normal)
    button.imageView?.contentMode = .scaleAspectFit
    button.contentHorizontalAlignment = .center
    button.contentVerticalAlignment = .center
    button.layer.cornerRadius = 0.5 * button.bounds.size.width
    button.layer.masksToBounds = true
    button.addTarget(self, action: #selector(touchDown), for: [.touchDown, .touchDragEnter])
    button.addTarget(self, action: #selector(touchUp), for: [.touchUpInside, .touchDragExit, .touchCancel])

    return button
}()

private lazy var informationButton: UIButton = {
    let button = UIButton(type: .custom)

    button.frame = CGRect(x: 120, y: 10, width: 35, height: 35)
    button.setImage(UIImage(named: "yenigozlukgri.png"), for: .normal)
    button.imageView?.contentMode = .scaleAspectFit
    button.contentHorizontalAlignment = .center
    button.contentVerticalAlignment = .center
    button.layer.cornerRadius = 0.5 * button.bounds.size.width
    button.layer.masksToBounds = true
    button.addTarget(self, action: #selector(touchDown), for: [.touchDown, .touchDragEnter])
    button.addTarget(self, action: #selector(touchUp), for: [.touchUpInside, .touchDragExit, .touchCancel])

    return button
}()

Это мои кнопки.Я не пользуюсь раскадровкой, но считаю, что это не существенно для решения.

@objc func touchDown() {
    animator.stopAnimation(true)
    boostButton.backgroundColor = .red
    //highlightedColor
}

@objc func touchUp() {
    animator = UIViewPropertyAnimator(duration: 0.5, curve: .easeOut, animations: {
        self.boostButton.backgroundColor = .gray
    })
    animator.startAnimation()
}

Что я хочу сделать, так это то, что при нажатии одной из кнопок она должна выполнить анимацию.Если я добавлю informationButton , как boostButton , к моим функциям, они оба выполнят анимацию даже при нажатии одной кнопки.Он должен работать только для одного.Как я могу исправить это, чтобы быть функциональным для еще большего количества кнопок?

1 Ответ

0 голосов
/ 17 декабря 2018

Используйте параметр

 @objc func touchDown(_ sender:UIButton) {
    animator.stopAnimation(true)
    sender.backgroundColor = .red
    //highlightedColor
}

@objc func touchUp(_ sender:UIButton) {
    animator = UIViewPropertyAnimator(duration: 0.5, curve: .easeOut, animations: {
         sender.backgroundColor = .gray
    })
    animator.startAnimation()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...