Для сплошных цветов фона contentView.backgroundColorдостаточно установить:
func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
if let headerView = view as? UITableViewHeaderFooterView {
headerView.contentView.backgroundColor = .red // Works!
}
}
Для цветов с прозрачностью, включая .clearцвет, это больше не работает:
func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
if let headerView = view as? UITableViewHeaderFooterView {
headerView.contentView.backgroundColor = .clear // Does not work 😞
}
}
Для полностью прозрачного заголовка раздела установите для backgroundViewсвойства пустое представление:
func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
if let headerView = view as? UITableViewHeaderFooterView {
headerView.backgroundView = UIView() // Works!
}
}
Однако остерегайтесь возможных побочных эффектов. Если для представления таблицы не установлено значение «Сгруппировано», заголовки разделов будут привязываться вверх при прокрутке вниз. Если заголовки разделов прозрачны, содержимое ячеек будет видно насквозь, что может выглядеть не очень хорошо.
Здесь заголовки разделов имеют прозрачный фон:

Чтобы предотвратить это, лучше установить фон заголовка раздела на сплошной цвет (или градиент), соответствующий фону представления таблицы или контроллера представления.
Здесь заголовки разделов имеют полностью непрозрачный градиентный фон:
