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