Я пытаюсь изменить высоту конкретного заголовка раздела в табличном представлении. Я проверил приведенный ниже код, чтобы понять, как работает tableView(_:heightForHeaderInSection:)
.
override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
print("DEBUG : ", section, tableView.sectionHeaderHeight)
return tableView.sectionHeaderHeight
}
Отладочная печать ниже показывает, что метод вызывается несколько раз, но высота заголовка всегда равна 18.0 (по умолчанию).
DEBUG : 4 18.0
DEBUG : 4 18.0
DEBUG : 0 18.0
DEBUG : 0 18.0
DEBUG : 1 18.0
DEBUG : 1 18.0
DEBUG : 2 18.0
...
DEBUG : 3 18.0
Теперь, как только я использую 18.0 в качестве фиксированного значения для возврата (для целей тестирования), вертикальное расширение табличного представления визуально сжимается, то есть секции располагаются ближе друг к другу, и поэтому весь пользовательский интерфейс выглядит иначе. Кажется, что пространство между разделами сокращено, поскольку заголовок первого раздела (по вертикали) виден только наполовину.
override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
print("DEBUG : ", section, tableView.sectionHeaderHeight)
return 18.0
}
Как это возможно?
Возможно ошибка?
--- ОБНОВЛЕНИЕ --- (13.06.2019)
Мой вопрос был основан на намерении скрыть раздел (2), включая заголовок. Я понял, что tableView.sectionHeaderHeight
было неправильное свойство для использования. Я должен был использовать super.tableView(tableView, heightForHeaderInSection: section)
.
Приведенный ниже код работает как нужно:
override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
if (section == 2) && myCondition {
return CGFloat.leastNonzeroMagnitude
}
return super.tableView(tableView, heightForHeaderInSection: section)
}
Тем не менее, я не знаю, откуда взялся 18.0
(см. Выше), так как я не использую файлы .xib.
Кстати super.tableView(tableView, heightForHeaderInSection: section)
всегда возвращает -1
. Я считаю, что это заставляет iOS самостоятельно решать, какую высоту выбрать. Заданное вручную значение 18.0
(для тестирования) уменьшило заголовок, так как для iOS выбрано автоматическое значение высоты заголовка.
Я не нашел свойства для печати этого значения (должно быть около 30.0
- дикая догадка, ничего более).