UITableview: заголовок раздела не регулирует положение автоматически при полноэкранном нажатии

Происходит только при компиляции с устройствами Xcode9 и iOS 11.

Заголовок раздела не прикрепляется автоматически вверху, оставляя место в представлении, через которое можно увидеть содержимое. (Скриншот прилагается) Происходит при нажатии на полноэкранный режим. Но иногда заголовок прилипает к верху при нажатии.
При прокрутке вверх/вниз заголовок прилипает к верху. (включен GIF-файл)

Снимок экрана

GIF

Поправьте меня, если я ошибаюсь, плавающий характер заголовка раздела обеспечивается UITableViewStyle, установленным на обычный.

tableView = UITableView()
tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 44
tableView.cellLayoutMarginsFollowReadableWidth = false
tableView = UITableView(frame: self.view.frame, style: UITableViewStyle.plain)
tableView.sectionHeaderHeight = 44
//    tableView.estimatedSectionHeaderHeight = 0
tableView.register(UITableViewCell.self, forCellReuseIdentifier: "content")
tableView.register(UITableViewHeaderFooterView.self, forHeaderFooterViewReuseIdentifier: "hContent")
tableView.dataSource = self
tableView.delegate = self

Попытался установить для предполагаемогоSectionHeaderHeight значение 0 (отключить), как было предложено здесь. Но это не сработало.

Мы попытались перезагрузить данные tableView в нашей функции hideNavBar, как было предложено здесь для аналогичной проблемы. Но это прокрутит нас к другому контенту.

Попробовал следующее, предложенное другим ответом в нашей функции hideNavBar, и снова столкнулся с той же проблемой, когда мы прокручиваем какой-то удаленный контент .

tableView.reloadData()
tableView.layoutIfNeeded()
tableView.beginUpdates()
tableView.endUpdates() 

person Dar    schedule 23.02.2018    source источник
comment
Вы также скрываете navBar при прокрутке вниз? Есть этот модуль под названием AMScrollingNavbar, который я использую для аналогичной функциональности.   -  person Hunaid Hassan    schedule 23.02.2018


Ответы (1)


Изменение может быть связано с изменением ограничений безопасной зоны на iPhone X. Поэтому вместо перезагрузки всех данных я предлагаю добавить ссылку на кадр. Обходной путь, который отлично работал у меня даже на iPhone X. Добавьте следующие строки в соответствующие функции.

функции hideNavbar() и hideTabbar()

tableView.frame = CGRect(x: 0, y: 0.01, width: view.bounds.width, height: view.bounds.height)

функции showNavbar() и hideTabbar()

tableView.frame = CGRect(x: 0, y: 0, width: view.bounds.width, height: view.bounds.height)
person Nish    schedule 24.02.2018