Я строю базовый ViewController, содержащий CollectionViewController с несколькими разделами.Я хотел бы, чтобы UISearchBar содержался в NavigationBar, но, похоже, Swift допускает только два варианта поведения: сначала скрыть панель поиска, а затем показать ее после прокрутки пользователем вниз или всегда отображать панель поиска.
Мне бы хотелось, чтобы панель поиска работала так же, как, например, в приложении «Сообщения», где она появляется без необходимости прокрутки пользователем, а затем скрывается, когда пользователь прокручивает страницу вниз.Я уверен, что есть простое решение для этого, но я довольно новичок в разработке для iOS и не смог найти ранее заданные вопросы для этого.
Пример того, как выглядит панель поискавсегда присутствует:
Пример того, как пользователь должен прокрутить страницу вниз, чтобы появилась строка поиска:
Инициализация контроллера и панели поиска:
let searchController = UISearchController(searchResultsController: nil)
let searchBar: UISearchBar = {
let search = UISearchBar()
search.placeholder = "Search"
search.translatesAutoresizingMaskIntoConstraints = false
search.sizeToFit()
search.barStyle = .default
return search
}()
// Truncated...
// Called from viewDidLoad()
func configureSearchBar() {
searchController.searchResultsUpdater = self
searchController.obscuresBackgroundDuringPresentation = false
searchController.searchBar.placeholder = "Search"
searchController.searchBar.translatesAutoresizingMaskIntoConstraints = false
searchController.isActive = true
definesPresentationContext = true
navigationItem.title = "Test Title"
navigationItem.searchController = searchController
navigationItem.hidesSearchBarWhenScrolling = false
}
Я знаю, что этот код не даст ожидаемого поведения, но есть ли простоемодификацию, которую я мог бы сделать, чтобы заставить ее вести себя правильно?