iphone x: держать панель поиска в безопасной зоне
Обновление нашего приложения для поддержки iPhone X. Как добавить панель поиска в заголовок табличного представления и поместить его в безопасную зону? Вот как мы сейчас строим панель поиска.
let searchController = UISearchController(searchResultsController: nil)
func buildSearchBar() {
self.searchController.searchResultsUpdater = self
self.searchController.hidesNavigationBarDuringPresentation = false
self.searchController.dimsBackgroundDuringPresentation = false
self.searchController.searchBar.sizeToFit()
self.tableView.tableHeaderView = searchController.searchBar
self.definesPresentationContext = true
}
2 ответа
Непонятно, что вы подразумеваете под "в пределах безопасной зоны". Табличное представление может прокручиваться, поэтому панель поиска не обязательно находится "внутри" какой-либо части экрана; его можно прокручивать за областью датчика и дальше.
Тем не менее, вы заметите, что нативные приложения не помещают панель поиска в качестве заголовка таблицы. Они поместили это в панель навигации. Вы должны сделать то же самое. Поместите панель поиска в панель навигации, установив searchController
из navigationItem
,
Эта тема подробно обсуждается в видео " Создание приложений для iPhone X". ( Дизайн для iPhone X тоже хорошее видео.)
В итоге Apple предлагает использовать навигационный контроллер и показать его там:
let searchController = UISearchController(searchResultsController: nil)
searchController.searchResultsUpdater = self
searchController.obscuresBackgroundDuringPresentation = false
if #available(iOS 11, *) {
navigationItem.searchController = searchController
searchController.isActive = true
} else {
present(searchController, animated: true)
}
(Кстати, даже при отсутствии навигационного контроллера, present
-направление контроллера поиска вместо установки в качестве заголовка таблицы может помешать его прокрутке из безопасной области.)