Как изначально отобразить SearchBar в NavigationBar, но все равно скрыть его при прокрутке пользователя? - PullRequest
1 голос
/ 25 апреля 2019

Я строю базовый ViewController, содержащий CollectionViewController с несколькими разделами.Я хотел бы, чтобы UISearchBar содержался в NavigationBar, но, похоже, Swift допускает только два варианта поведения: сначала скрыть панель поиска, а затем показать ее после прокрутки пользователем вниз или всегда отображать панель поиска.

Мне бы хотелось, чтобы панель поиска работала так же, как, например, в приложении «Сообщения», где она появляется без необходимости прокрутки пользователем, а затем скрывается, когда пользователь прокручивает страницу вниз.Я уверен, что есть простое решение для этого, но я довольно новичок в разработке для iOS и не смог найти ранее заданные вопросы для этого.

Пример того, как выглядит панель поискавсегда присутствует:

enter image description here

Пример того, как пользователь должен прокрутить страницу вниз, чтобы появилась строка поиска:

enter image description here

Инициализация контроллера и панели поиска:

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
}

Я знаю, что этот код не даст ожидаемого поведения, но есть ли простоемодификацию, которую я мог бы сделать, чтобы заставить ее вести себя правильно?

...