У меня есть tableView.tableHeaderView, который является UITableViewHeaderFooterView.
Я бы хотел, чтобы этот заголовок изначально не отображался при первом представлении tableViewController.Когда пользователь прокручивает вниз от верхней части tableView, я хотел бы представить заголовок.
Затем, когда пользователь слегка прокручивает вниз, я хочу, чтобы заголовок переместился в скрытое положение.Поведение точно такое же, как и в заголовке заархивированных чатов на странице WhatsApp, где перечислены все ваши чаты.
Есть ли способ добиться этого без сложного набора вызовов делегатов scrollview?
Я подумалв предыдущих версиях swift / xcode метод tableView.tableHeaderView перемещался вверх и вниз, но я заметил, что он этого больше не делает.
Я думаю, что единственным решением может быть переопределение scrollViewDidScroll.Это то, что я сделал, но когда снова появляется tableView.headerView, он делает это над первой ячейкой tableView.Не уверен, как заставить его появиться в правильном положении.
override func scrollViewDidScroll(_ scrollView: UIScrollView) {
if let myHeaderView = self.tableView.tableHeaderView as? MyTableViewHeaderFooterView {
let height = (self.navigationController?.navigationBar.frame.size.height)! + UIApplication.shared.statusBarFrame.size.height + self.searchController.searchBar.frame.size.height
if scrollView.contentOffset.y < -height {
UIView.animate(withDuration: 0.1) {
myHeaderView.frame.size.height = 44
}
}
}
}