UISearchController / UINavigationBar показывает неработающую анимацию при использовании в UINavigationController - PullRequest
0 голосов
/ 24 декабря 2018

У меня есть эта шляпа NavigationController, для которой NavigationBar включены большие заголовки.Корень ViewController имеет SearchController, а hidesSearchBarWhenScrolling имеет значение True в ViewController NavigationItem, поскольку я не хочу, чтобы SearchBar был всегда видимым.У ViewController есть TableView, и когда вы нажмете на один из его элементов, новый экземпляр того же ViewController будет помещен в стек навигации с помощью перехода к раскадровке.Однако, глядя на переход между текущим и новым ViewController, можно заметить, что анимация выглядит неправильно: как только новый ViewController перемещается в SearchBar, он становится пустым, просто показывая его фон,Когда новый ViewController станет полностью видимым, SearchBar исчезнет без какой-либо анимации.

Вот как я добавляю SearchController (здесь ничего необычного):

class MyViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()

        let searchController = UISearchController(searchResultsController: nil)
        navigationItem.searchController = searchController
        navigationItem.hidesSearchBarWhenScrolling = true
    }
}

И так выглядит при переходе от «Один» к «Два»:

UISearchController / UINavigationBar показывает неработающую анимацию при использовании в UINavigationController

enter image description here

Есть ли способ, чтобы сделать это выглядеть лучше?Конечно, в новом ViewController SearchBar изначально не должен быть виден, поэтому он должен как-то исчезнуть.Но я думаю, что SearchBar на старом ViewController, возможно, следует каким-то образом исчезнуть, а не оставаться там, а затем внезапно скрываться, когда переход к новому ViewController закончен.Надеюсь, я тут что-то не так делаю ...

Спасибо и веселого вам всем,

Питер

Ответы [ 2 ]

0 голосов
/ 27 декабря 2018

Ну, я наконец-то нашел что-то очень полезное, чего просто не смог найти, прежде чем задавать вопрос:

Сломанная анимация UISearchBar, встроенная в NavigationItem

Слишком плохоизвестна с iOS 11 и до сих пор не исправлена.

0 голосов
/ 26 декабря 2018

Попробуйте установить для контроллера поиска значение nil в методе viewWillDissappear.

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    self.navigationItem.searchController = nil
}
...