単色の背景色の場合は、を設定する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!
}
}
ただし、起こりうる副作用に注意してください。テーブルビューが「グループ化」に設定されていない限り、セクションヘッダーは下にスクロールしたときに上部にスナップします。セクションヘッダーが透明の場合、セルのコンテンツが透けて見えるため、見栄えがよくない場合があります。
ここでは、セクションヘッダーの背景が透明になっています。
これを防ぐには、セクションヘッダーの背景を、テーブルビューまたはビューコントローラーの背景に一致する単色(またはグラデーション)に設定することをお勧めします。
ここで、セクションヘッダーは完全に不透明なグラデーションの背景になります。