Para cores sólidas de fundo, definir o contentView.backgroundColor
deve ser suficiente:
func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
if let headerView = view as? UITableViewHeaderFooterView {
headerView.contentView.backgroundColor = .red // Works!
}
}
Para cores com transparência, incluindo .clear
cores, isso não funciona mais:
func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
if let headerView = view as? UITableViewHeaderFooterView {
headerView.contentView.backgroundColor = .clear // Does not work 😞
}
}
Para um cabeçalho de seção transparente completo, configure a backgroundView
propriedade para uma visualização vazia:
func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
if let headerView = view as? UITableViewHeaderFooterView {
headerView.backgroundView = UIView() // Works!
}
}
No entanto, cuidado com os possíveis efeitos colaterais. A menos que a exibição da tabela esteja definida como "Agrupado", os cabeçalhos das seções serão ajustados na parte superior ao rolar para baixo. Se os cabeçalhos da seção forem transparentes, o conteúdo da célula será visualizado, o que pode não parecer ótimo.
Aqui, os cabeçalhos das seções têm um plano de fundo transparente:
Para evitar isso, é melhor definir o plano de fundo do cabeçalho da seção para uma cor sólida (ou gradiente) que corresponda ao plano de fundo da visualização da tabela ou do controlador de visualização.
Aqui, os cabeçalhos das seções têm um fundo gradiente totalmente opaco: