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