web-dev-qa-db-fra.com

Couleur d'arrière-plan UIButton pour le problème d'état en surbrillance/sélectionné

J'ai une UIButton et j'ai créé une extension pour ajouter une couleur de fond pour différents états. 

J'utilise le code suivant:

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)

Mon problème est qu’il ne détecte pas la couleur de fond et la couleur de titre UIButton appropriées pour l’état sélectionné ou en surbrillance.

 Normal state  Highlighted state

16
Ashish Verma

J'ai trouvé le problème, UIButton étant réglé sur Système , je l'ai simplement modifié en Personnalisé , il a commencé à fonctionner comme prévu.

61
Ashish Verma

Mise à jour de 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)
    }

Evénement Bouton Action

Afficher Touch On Highlight

4
Puji Wahono

Lorsque votre UIButton est sélectionné. Si vous vous concentrez sur le bouton, il ne sera pas mis en surbrillance comme état .Highlighted. S'il n'est pas sélectionné, il le mettra en surbrillance à votre guise. Pour ce qui concerne vous avez une image d'arrière-plan dans votre bouton, il utilisera l'effet par défaut pour mettre une image en surbrillance. Si vous souhaitez modifier l'état en .Selected, vous devez définir la variable selected de UIButton sur true.

0
季亨达

Pour mettre en œuvre l’illumination personnalisée des boutons, vous avez besoin des éléments suivants: vous n’appuyez pas sur - Mettez en œuvre trois méthodes pour le bouton (Toucher vers le bas/Toucher vers le haut/Faire glisser le curseur vers l’extérieur) - Pour y changer l’éclairage des boutons

0
KuDji