2016-11-05 8 views
0

Я создал UISearchController так:Дополнительное пространство в верхней части UITableView UISearchController в

searchResultsController = SearchResultsController() 

    searchController = UISearchController(searchResultsController: searchResultsController) 
    searchController.searchResultsUpdater = self 
    searchController.hidesNavigationBarDuringPresentation = false 
    searchController.dimsBackgroundDuringPresentation = true 
    searchController.searchBar.searchBarStyle = .minimal 
    searchController.delegate = self 
    definesPresentationContext = true 

    navigationItem.titleView = searchController.searchBar 

SearchResultsController просто-контроллер с UITableView, чтобы показать результаты поиска.

Когда устройство находится в портретном, начать поиск в портретном режиме, есть дополнительное пространство в верхней части представления таблицы (заголовок РЕЗУЛЬТАТ является началом представления таблицы)

Device in portrait - Start search in portrait

Тогда если я поворачиваю в ландшафтном режиме, пространство исчезло:

Device in landscape - Start search in portrait

Когда устройство находится в ландшафтном режиме, и я начинаю поиск, то табличное отрезан:

Device in landscape - Start search in landscape

Тогда, если я поворачиваю к портрету, вид таблицы идеально подходит:

Device in portrait - Start search in landscape

Дополнительная высота пространство точно такой же, как высота строки состояния. Поэтому я удивляюсь, что здесь есть что-то, что связано со статусом.

Этого не произошло, если я назначил поисковую панель в виде таблицы tableHeaderView. Это происходит только в том случае, если панель поиска находится в заголовке навигации. Кто-нибудь знает, почему?

+0

мат, проверить этот ответ http://stackoverflow.com/questions/39318740/strange-white-space-at-uitableview-header-when-using- uisearchcontroller-with-uit Это помогло мне. –

+0

Этот ответ исправил мою проблему: https://stackoverflow.com/a/28722390/742298 –

ответ

0

написать это в viewDidLoad:

self.automaticallyAdjustsScrollViewInsets = false 
+0

По умолчанию это «истина», и я не касался этого. Я хочу использовать прозрачную панель навигации и панель вкладок, поэтому мне нужно сохранить этот «истинный» – kientux

0

Эта проблема может появиться только для IOS 10. Запиши это в viewDidLoad

if #available(iOS 10.0, *) { 
automaticallyAdjustsScrollViewInsets = false 
tableView.contentInset = UIEdgeInsetsMake(64, 0, 44, 0)} 
+0

. Посмотрите мой ответ здесь: http://stackoverflow.com/a/40523831/4405051 – kientux