Pour les couleurs d'arrière-plan unies, le réglage contentView.backgroundColor
devrait suffire:
func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
if let headerView = view as? UITableViewHeaderFooterView {
headerView.contentView.backgroundColor = .red // Works!
}
}
Pour les couleurs avec transparence, y compris la .clear
couleur, cela ne fonctionne plus:
func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
if let headerView = view as? UITableViewHeaderFooterView {
headerView.contentView.backgroundColor = .clear // Does not work 😞
}
}
Pour un en-tête de section entièrement transparent, définissez la backgroundView
propriété sur une vue vide:
func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
if let headerView = view as? UITableViewHeaderFooterView {
headerView.backgroundView = UIView() // Works!
}
}
Cependant, méfiez-vous des effets secondaires possibles. À moins que la vue du tableau ne soit définie sur «Groupé», les en-têtes de section s'aligneront en haut lors du défilement vers le bas. Si les en-têtes de section sont transparents, le contenu de la cellule sera visible à travers, ce qui peut ne pas avoir l'air parfait.
Ici, les en-têtes de section ont un arrière-plan transparent:
Pour éviter cela, il est préférable de définir l'arrière-plan de l'en-tête de section sur une couleur unie (ou un dégradé) correspondant à l'arrière-plan de votre vue de tableau ou de votre contrôleur de vue.
Ici, les en-têtes de section ont un arrière-plan dégradé entièrement opaque: