Per colori di sfondo a tinta unita, l'impostazione di contentView.backgroundColordovrebbe essere sufficiente:
func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
if let headerView = view as? UITableViewHeaderFooterView {
headerView.contentView.backgroundColor = .red // Works!
}
}
Per i colori con trasparenza, compreso il .clearcolore, non funziona più:
func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
if let headerView = view as? UITableViewHeaderFooterView {
headerView.contentView.backgroundColor = .clear // Does not work 😞
}
}
Per un'intestazione di sezione completamente trasparente, imposta la backgroundViewproprietà su una vista vuota:
func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
if let headerView = view as? UITableViewHeaderFooterView {
headerView.backgroundView = UIView() // Works!
}
}
Tuttavia, fai attenzione ai possibili effetti collaterali. A meno che la vista tabella non sia impostata su "Raggruppata", le intestazioni di sezione si agganceranno in alto durante lo scorrimento verso il basso. Se le intestazioni delle sezioni sono trasparenti, il contenuto della cella sarà visibile, il che potrebbe non sembrare eccezionale.
Qui, le intestazioni delle sezioni hanno uno sfondo trasparente:

Per evitare ciò, è meglio impostare lo sfondo dell'intestazione della sezione su un colore a tinta unita (o sfumatura) corrispondente allo sfondo della vista tabella o del controller della vista.
Qui, le intestazioni di sezione hanno uno sfondo sfumato completamente opaco:
