Я не могу удалить пробел над первой строкой таблицы при тестировании с iOS 10.3. Я попробовал все решения, предложенные в других сообщениях, таких как automaticallyAdjustsScrollViewInsets
, добавил фиктивное представление над UITableView в иерархии, например. здесь - но все безуспешно.
Вот установка и сценарий.
У меня есть UIViewController с UITableView. Назовите его V1. он встроен в навигационный контроллер.
Я добавляю UISearchController в viewDidLoad() в заголовок таблицы. Я не устанавливаю никаких ограничений, не контролируя какой-либо макет программно.
self.searchController.obscuresBackgroundDuringPresentation = false
self.searchController.hidesNavigationBarDuringPresentation = true
if #available(iOS 11.0, *) {
self.searchController.searchBar.delegate = self
self.navigationItem.searchController = self.searchController
self.navigationController?.navigationBar.prefersLargeTitles = true
self.searchController.searchBar.scopeButtonTitles = ["All","A","B"]
self.navigationItem.hidesSearchBarWhenScrolling = true
} else {
self.searchController.searchBar.delegate = self
self.searchController.searchBar.scopeButtonTitles = ["All","A","B"]
tableView.tableHeaderView = searchController.searchBar
self.searchController.searchBar.sizeToFit()
}
У меня есть еще один VC (таблица), из которого я собираю данные, используя unwind segue. Назовите его V2.
я делаю ниже в методе размотки
DispatchQueue.main.async {
self.searchController.searchBar.text = searchText
self.searchController.isActive = true
let scope = self.searchController.searchBar.scopeButtonTitles![self.searchController.searchBar.selectedScopeButtonIndex]
self.filterContentForSearchText(searchText, scope: scope)
}
Сценарий 1 - работает нормально 1. При открытии V1 строки и панель поиска отображаются точно в заголовке таблицы. 2. Нажмите на кнопку панели, которая открывает V2 3. Выберите значение и вернитесь 4. Возвращаемое значение назначается панели поиска, и панель поиска открывается на панели навигации 5 В таблице показаны строки, соответствующие возвращаемому значению из V2 Между первой строкой и панель поиска
Сценарий 2 - это не удается. 1. При открытии V1 строки и панель поиска отображаются точно в заголовке таблицы. 2. Прокрутите строки вверх так, чтобы заголовок находился под панелью навигации 3. Нажмите на кнопку панели, которая открывает V2 4. Выберите значение и вернитесь 5. Возвращаемое значение назначается панели поиска, и панель поиска открывается в панели навигации 5 В таблице показаны строки, которые соответствует возвращаемому значению из V2
проблема в этом сценарии заключается в появлении разрыва между первой строкой и панелью поиска. если я нажимаю кнопку отмены на панели поиска, панель поиска восстанавливается поверх таблицы, но между панелью поиска, т.е. строкой заголовка и панелью навигации, есть зазор.
Я заметил, что происхождение tableview равно -88, когда происходит выше.
Я попытался установить верхнее ограничение представления таблицы как для суперпредставления, т.е. для просмотра, так и для нижней части верхнего макета.
В чем может быть проблема? скриншоты прилагаются.
- На снимке экрана показан разрыв между активным контроллером поиска и первой ячейкой.
- На снимке экрана показан разрыв между неактивным контроллером поиска и первой ячейкой.
- Визуальный отладчик, показывающий представление ViewController оранжевым цветом, табличное представление зеленым цветом и представление заголовка плоским сливовым цветом. Над первой ячейкой, которую я выбрал, есть представление. Не знаю, что это такое, но вызывает ли это проблему? Вид там на нижней таблице также.
Спасибо, Ашиш.