Par défaut, UITableView définit la couleur d'arrière-plan de l'étiquette sur la couleur d'arrière-plan de la vue de table. Ceci est sans doute pour l'optimisation (il laisse l'étiquette soit « opaque », donc pas de mélange alpha est nécessaire lorsque compositing) =
Il y a deux principaux correctifs à ce problème.
- Dans votre UITableViewDelegate, mettre en œuvre -tableView: willDisplayCell: forRowAtIndexPath: et définissent backgroundColor = nil et opaque = NO. (Pour autant que je sache,
nil
est généralement équivalent à [UIColor clearColor]
.)
- Remplacer
-[UITableViewCell setSelected:animated]
et backgroundColor
et opaque
comme ci-dessus. Cela fonctionne parce que setSelected: animated: est appelé avant que la cellule ne soit affichée pour la première fois, mais est un peu plus ickier (ça s'appelle beaucoup).
La façon de définir backgroundColor à clearColor est la bonne façon. Peut-être que quelque chose ne va pas dans la façon dont vous ajoutez textLabel et detailTextLabel à une cellule personnalisée. – AechoLiu