it-roy-ru.com

UIButton цвет фона для выделенного/выбранного состояния вопроса

У меня есть UIButton, и я создал расширение, чтобы добавить цвет фона для другого состояния. 

Я использую следующий код:

extension UIButton {

    func setBackgroundColor(color: UIColor, forState: UIControlState) {

        UIGraphicsBeginImageContext(CGSize(width: 1, height: 1))
        CGContextSetFillColorWithColor(UIGraphicsGetCurrentContext(), color.CGColor)
        CGContextFillRect(UIGraphicsGetCurrentContext(), CGRect(x: 0, y: 0, width: 1, height: 1))
        let colorImage = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()

        self.setBackgroundImage(colorImage, forState: forState)
    }
}


// Set Button Title and background color for different states
    self.donateButton.setBackgroundColor(UIColor.redColor(), forState: .Normal)
    self.donateButton.setTitleColor(UIColor.whiteColor(), forState: .Normal)
    self.donateButton.setBackgroundColor(UIColor.greenColor(), forState: .Highlighted)
    self.donateButton.setTitleColor(UIColor.whiteColor(), forState: .Highlighted)
    self.donateButton.setBackgroundColor(UIColor.greenColor(), forState: .Selected)
    self.donateButton.setTitleColor(UIColor.whiteColor(), forState: .Selected)

Моя проблема в том, что он не подбирает правильный UIButton цвет фона и цвет заголовка для выделенного/выбранного состояния.

Normal state Highlighted state

16
Ashish Verma

Я обнаружил проблему, UIButton был установлен на System . Я просто изменил ее на Custom , он начал работать как положено.

61
Ashish Verma

Обновление Swift 4

extension UIButton {

    func setBackgroundColor(color: UIColor, forState: UIControlState) {

        UIGraphicsBeginImageContext(CGSize(width: 1, height: 1))
        UIGraphicsGetCurrentContext()!.setFillColor(color.cgColor)
        UIGraphicsGetCurrentContext()!.fill(CGRect(x: 0, y: 0, width: 1, height: 1))
        let colorImage = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()


        self.setBackgroundImage(colorImage, for: forState)
    }

Событие Кнопка Действие

Показать Touch On Highlight

4
Puji Wahono

Когда ваш UIButton выбран. Если вы сфокусируетесь на кнопке, она не будет подсвечивать кнопку как состояние .Highlighted. Если он не выбран, он будет выделен как ваша воля. Поскольку у вас есть фоновое изображение в вашей кнопке, он будет использовать эффект по умолчанию, чтобы выделить изображение. Если вы хотите изменить состояние на .Selected, вы должны установить для переменной selected of UIButton значение true.

0
季亨达

Для реализации пользовательской подсветки кнопок вам необходимо: - Установить в раскадровке цвет фона и альфа, которые вы хотите видеть при нажатии кнопки - Во время инициализации установите фон и альфа в качестве кнопки. это не нажата - Реализуйте три метода для кнопки (Touch Down/Touch Up Side/Touch Drag Outside) - В них измените подсветку кнопки

0
KuDji