Полный пример 2019 для копирования и вставки
Сначала установите «Сгруппировано» на раскадровке: это должно произойти во время инициализации, вы не можете установить его позже, поэтому проще не забыть сделать это на раскадровке:
Следующий,
Должен реализовать heightForHeaderInSection из-за ошибки Apple.
func tableView(_ tableView: UITableView,
heightForHeaderInSection section: Int) -> CGFloat {
return CGFloat(70.0)
}
В Apple все еще существует ошибка - уже десять лет - когда она просто не отображает первый заголовок (т.е. индекс 0), если у вас нет heightForHeaderInSection
вызова.
Так что tableView.sectionHeaderHeight = 70
просто не работает, он сломан .
Установка фрейма ничего не дает:
В viewForHeaderInSection
просто создать UIView ().
Это бессмысленно / ничего не дает, если вы используете UIView (frame ...), поскольку iOS просто устанавливает размер представления, определяемый таблицей.
Итак, первая строка viewForHeaderInSection
будет простой, let view = UIView()
и это будет то представление, которое вы вернете.
func tableView(_ tableView: UITableView,
viewForHeaderInSection section: Int) -> UIView? {
let view = UIView()
let l = UILabel()
view.addSubview(l)
l.bindEdgesToSuperview()
l.backgroundColor = .systemOrange
l.font = UIFont.systemFont(ofSize: 15)
l.textColor = .yourClientsFavoriteColor
switch section {
case 0:
l.text = "First section on screen"
case 1:
l.text = "Here's the second section"
default:
l.text = ""
}
return view
}
Вот и все - все остальное - пустая трата времени.
Еще одна «привередливая» проблема Apple.
Используемое выше удобное расширение:
extension UIView {
func bindEdgesToSuperview() {
guard let s = superview else {
preconditionFailure("`superview` nil in bindEdgesToSuperview")
}
translatesAutoresizingMaskIntoConstraints = false
leadingAnchor.constraint(equalTo: s.leadingAnchor).isActive = true
trailingAnchor.constraint(equalTo: s.trailingAnchor).isActive = true
topAnchor.constraint(equalTo: s.topAnchor).isActive = true
bottomAnchor.constraint(equalTo: s.bottomAnchor).isActive = true
}
}
tableView:titleForHeaderInSection:
?