Ceci semble être un bug dans Xcode 11 (testé en bêta 7 et GM Seed 1) - J'ai signalé ce problème à Apple via Feedback Assistant (FB7198213). Le problème est réglé dans Xcode 11 GM Seed 2.
Pour les versions précédentes de Xcode 11, une solution de contournement pour le comportement incorrect des couleurs de libellé dynamiques consiste à réattribuer la couleur du libellé dans awakeFromNib()
dans la sous-classe de la cellule de table. Par exemple :
class TableCell: UITableViewCell {
@IBOutlet private weak var label: UILabel!
override func awakeFromNib() {
super.awakeFromNib()
if #available(iOS 13.0, *) {
// La couleur du texte du libellé était définie sur secondaryLabel dans l'éditeur XIB
// mais nous la réattribuons à nouveau à secondaryLabel ici. Cela empêche
// un bug où le libellé apparaît toujours dans sa variante de mode clair.
label.textColor = .secondaryLabel
}
}
}
Réponse originale : Cette réponse initiale aborde le problème uniquement pour la couleur de libellé par défaut (c'est-à-dire principale)
Il semble y avoir un bug dans l'éditeur XIB de Xcode 11 (testé en bêta 7) concernant l'édition des couleurs de libellé. Lorsqu'une couleur de libellé est définie dans l'éditeur XIB sur "Couleur du libellé" (même si elle était déjà définie ainsi), le XML sous-jacent est modifié de manière à ce que le libellé apparaisse en noir même en mode sombre. En examinant la différence d'un fichier XIB entre la création d'un nouveau libellé, et après avoir défini explicitement la couleur de ce libellé sur "Couleur du libellé", on peut voir la différence.
Pour mon exemple simple, le XML du fichier XIB est passé de :
à :
Remarquez que la ligne a été supprimée. Ajouter manuellement cela corrige le comportement du libellé en mode sombre.