119 votes

Changer la couleur de l'UISwitch à l'état "OFF"

J'ai appris que nous pouvons changer l'apparence du bouton UISwitch dans son état « on », mais est-il également possible de changer la couleur de l'UISwitch dans l'état « off » ?

175voto

Long Pham Points 3961

Ma solution avec #SWIFT2 :

let onColor  = _your_on_state_color
let offColor = _your_off_state_color

let mSwitch = UISwitch(frame: CGRect.zero)
mSwitch.on = true

/*For on state*/
mSwitch.onTintColor = onColor

/*For off state*/
mSwitch.tintColor = offColor
mSwitch.layer.cornerRadius = mSwitch.frame.height / 2.0
mSwitch.backgroundColor = offColor
mSwitch.clipsToBounds = true

Résultat :

enter image description here

140voto

Sourabh Points 474

Essayez d'utiliser ce

yourSwitch.backgroundColor = [UIColor whiteColor];
youSwitch.layer.cornerRadius = 16.0;

Tout ça grâce à @Barry Wyckoff.

44voto

bengoesboom Points 1915

Vous pouvez utiliser la propriété tintColor sur le commutateur.

switch.tintColor = [UIColor redColor]; // the "off" color
switch.onTintColor = [UIColor greenColor]; // the "on" color

Notez que cela nécessite iOS 5+

20voto

matt Points 60113

Voici une assez bonne astuce : vous pouvez juste atteindre directement dans la vue secondaire de l'UISwitch qui tire son "off" arrière-plan, et changer sa couleur d'arrière-plan. Cela fonctionne beaucoup mieux sur iOS 13 que sur iOS 12 :

if #available(iOS 13.0, *) {
    self.sw.subviews.first?.subviews.first?.backgroundColor = .green
} else if #available(iOS 12.0, *) {
    self.sw.subviews.first?.subviews.first?.subviews.first?.backgroundColor = .green
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X