UIB кнопка, как переключатель - PullRequest
0 голосов
/ 04 июня 2019

Мне нужно создать кнопку, как переключатель. Я пытаюсь изменить цвет. Когда я нажимаю на одну из кнопок, все остальные кнопки становятся серыми. Но они не меняют свой цвет на серый.

extansion UIView 

func setGradientBackground(colorOne: UIColor, colorTwo: UIColor, cornerRadius: CGFloat) {

    let gradientLayer = CAGradientLayer()
    gradientLayer.frame = self.bounds
    gradientLayer.colors = [colorOne.cgColor, colorTwo.cgColor]
    gradientLayer.locations = [0.0, 1.0]
    gradientLayer.startPoint = CGPoint(x: 0.0, y: 0.0)
    gradientLayer.endPoint = CGPoint(x: 1.0, y: 1.0)
    gradientLayer.cornerRadius = cornerRadius

    layer.insertSublayer(gradientLayer, at: 10)
}

@IBAction func oneButtonAction(_ sender: Any) {
    oneButton.setGradientBackground(colorOne: UIColor(red: 0, green: 0.52, blue: 1, alpha: 1), colorTwo: UIColor(red: 0, green: 0.39, blue: 0.81, alpha: 1), cornerRadius: oneButton.frame.height/2)
    twoButton.backgroundColor = UIColor(red: 0.94, green: 0.96, blue: 0.98, alpha: 1)
}

@IBAction func twoButtonAction(_ sender: Any) {
    oneButton.backgroundColor = UIColor(red: 0.94, green: 0.96, blue: 0.98, alpha: 1)
    twoButton.setGradientBackground(colorOne: UIColor(red: 0, green: 0.52, blue: 1, alpha: 1), colorTwo: UIColor(red: 0, green: 0.39, blue: 0.81, alpha: 1), cornerRadius: oneButton.frame.height/2)

}

enter image description here

Похоже на это. Как это исправить? enter image description here

1 Ответ

1 голос
/ 04 июня 2019

Сначала назначьте все кнопки одним действием.

Затем поместите все кнопки, которые вы хотите использовать в качестве группы радиосвязи, в один массив.

let buttonGroup: [UIButton] = [button1, button2, button3]

@IBAction func buttonAction(_ sender: UIButton) {
    buttonGroup.forEach { button in
        if button == sender {
            button.setGradientBackground(colorOne: UIColor(red: 0, green: 0.52, blue: 1, alpha: 1), colorTwo: UIColor(red: 0, green: 0.39, blue: 0.81, alpha: 1), cornerRadius: oneButton.frame.height/2)
        } else {
            button.backgroundColor = UIColor(red: 0.94, green: 0.96, blue: 0.98, alpha: 1)
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...