web-dev-qa-db-fra.com

iOS UILabel textColor ne se met pas à jour en mode sombre

J'ai une vue de collection qui montre les créneaux horaires dans l'application. En mode sombre, il semble que l'UILabel n'affiche pas la couleur du texte noir sur fond blanc.

Dans le storyboard, j'ai défini la couleur comme noir (également essayé la couleur par défaut) pour l'étiquette.

Dans le code, lorsque l'utilisateur sélectionne la cellule,

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {

   if let cell = collectionView.cellForItem(at: indexPath) as? TimeCell{
      cell.timeLabel.toggleTheme(true)
   }
 }

et j'ai l'extension UILabel:

extension UILabel{

    func toggleTheme(_ selected : Bool){
        if selected{
            if #available(iOS 13.0, *) {
                if self.traitCollection.userInterfaceStyle == .dark{
                    self.textColor = UIColor.black
                    self.backgroundColor = UIColor.white
                }else{
                    self.textColor = UIColor.white
                    self.backgroundColor = UIColor.black
                }
            } else {
                 self.textColor = UIColor.white
                 self.backgroundColor = UIColor.black
            }

        }else{
            if #available(iOS 13.0, *) {
                if self.traitCollection.userInterfaceStyle == .dark{
                    self.textColor = UIColor.white
                    self.backgroundColor = UIColor.black
                }else{
                    self.textColor = UIColor.black
                    self.backgroundColor = UIColor.white
                }
            } else {
                 self.textColor = UIColor.black
                 self.backgroundColor = UIColor.white
            }

        }
    }

}

et le résultat est:

enter image description hereenter image description here

3
Teja Nandamuri

D'une manière ou d'une autre, l'étiquette en mode collection ne fonctionne pas comme prévu. J'ai essayé différentes configurations et aucune n'a fonctionné. J'ai fini par utiliser le bouton à la place et cela a fonctionné dans mon cas. Je mettrai à jour ma réponse une fois que cela fonctionnera avec une étiquette.

0
Teja Nandamuri

La couleur par défaut ne fonctionnera pas comme un noir à partir d'iOS 13 car la couleur par défaut a été changée en couleur de UIlabel au lieu de noir.

essayez de configurer la couleur du texte après avoir défini la couleur d'arrière-plan.

0
Reed