При использовании больших заголовков и нажатии строки состояния для прокрутки к вершине UIScrollView
или UITableView
(вероятно, также UICollectionView
, не проверял это), оно всегда заходит слишком далеко.
У меня включено обновление на TableView
, и при касании строки состояния оно выглядит примерно так и будет оставаться до тех пор, пока я не коснусь экрана.
У меня есть ScrollView
в другом ViewController
, и если я коснусь там строки состояния, она также прокручивается слишком далеко, делая панель навигации слишком высокой.Это также возвращается к норме, когда я нажимаю куда-то или прокручиваю чуть-чуть.
Нормальный:
После того, как я коснулся строки состояния:
Это также происходит только тогда, когда у меня активированы большие заголовки, при использовании обычных заголовков все работает как надо.
Есть идеи, как это исправить?
Как воссоздать:
- Создайте новый проект с контроллером навигации и
UIViewController
с TableView
внутри. - Установите контроллер навигации на большой размерназвания.Выключите полупрозрачный.Установить заголовок на
UIViewController
- Установить ограничения на
TableView
, чтобы закрепить края ViewController
- Создать выход для
TableView
в ViewController
- Реализация делегатов и установка количества строк, например, 100
- Запустите приложение
- Прокрутите вниз, чтобы большой заголовок стал обычным заголовком
- Коснитесь строки состояния, чтобы
tableView
прокрутка к вершине
Теперь заголовок находится не в той позиции, в которой он должен быть, если вы теперь прокрутите немного вверх или вниз, он вернется в нормальное положение.
ViewController
код:
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
tableView.delegate = self
tableView.dataSource = self
}
}
extension ViewController: UITableViewDelegate, UITableViewDataSource {
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 100
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "TestCell", for: indexPath)
return cell
}
}