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.
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.
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
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.
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