web-dev-qa-db-fra.com

Changer la couleur du texte de date sélectionné pour UIDatePicker pour le mode sombre (iOS 13)

Ayant du mal à trouver une solution pour changer la couleur du texte pour la date sélectionnée en mode sombre iOS 13.

Je sais comment changer la couleur du texte d'une vue UIPicker en utilisant du code

self.timePicker.setValue(UIColor.black, forKeyPath: "textColor")

OU en utilisant des attributs d'exécution définis par l'utilisateur. Mais rien ne fonctionne pour changer la couleur de date sélectionnée pour le mode sombre iOS 13. Avec la couleur de fond blanche et la couleur du texte noir, ma vue de sélecteur de date ressemble à ceci:

enter image description here

Donc, en changeant la couleur du texte en noir, ne change pas la couleur du texte de la date sélectionnée. Il change toutes les autres couleurs de texte en noir; mais pas celui sélectionné. Celui sélectionné reste blanc, ce qui est par défaut pour le mode sombre.

11
Saleh Sultan

Vous pouvez écrire une extension pour UIDatePicker, puis définir la textColor du texte datePicker sur UIColor.label, elle changera dynamiquement en fonction du mode d'interface (mode clair/sombre).

extension UIDatePicker {

     var textColor: UIColor? {
         set {
              setValue(newValue, forKeyPath: "textColor")
             }
         get {
              return value(forKeyPath: "textColor") as? UIColor
             }
     }  

     var highlightsToday : Bool? {
         set {
              setValue(newValue, forKeyPath: "highlightsToday")
             }
         get {
              return value(forKey: "highlightsToday") as? Bool
             }
     }      
 }

Après cela, vous pouvez définir la valeur textColor comme: -

  let datePicker = UIDatePicker()  
  datePicker.textColor = UIColor.label
0
Anshuman Singh