Для сплошных цветов фона 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!
}
}
Однако остерегайтесь возможных побочных эффектов. Если для представления таблицы не установлено значение «Сгруппировано», заголовки разделов будут привязываться вверх при прокрутке вниз. Если заголовки разделов прозрачны, содержимое ячеек будет видно насквозь, что может выглядеть не очень хорошо.
Здесь заголовки разделов имеют прозрачный фон:
Чтобы предотвратить это, лучше установить фон заголовка раздела на сплошной цвет (или градиент), соответствующий фону представления таблицы или контроллера представления.
Здесь заголовки разделов имеют полностью непрозрачный градиентный фон: