С iOS 11 Apple переработала UISearchBar, сделав углы более круглыми и увеличивая высоту. Добавить UISearchBar к навигационной панели довольно просто, просто установив его в качестве titleView элемента navigationItem с помощью navigationItem.titleView = searchBar
.
Тем не менее, в iOS 11, похоже, он работает не так, как ожидалось. Взгляните на экраны, где мы сравниваем одни и те же настройки с использованием iOS 10 и iOS 11
Вы можете четко видеть, что панель поиска увеличивает размер панели навигации, но кнопки панели не выровнены правильно. Кроме того, панель поиска больше не использует доступное пространство слева.
Помещение панели поиска в представление-обертку для получения кнопки отмены на iPad, как описано здесь Кнопка отмены не отображается в UISearchBar, также больше не работает, так как панель поиска тогда вообще не видна.
Если у кого-то есть подобные проблемы или вы уже знаете, как это исправить/улучшить, я был бы очень благодарен.
Это было построено с использованием Xcode 9 Beta 4. Возможно, будущие выпуски исправят эту проблему.
UPDATE:
Поскольку это не исправлено, мы решили использовать следующее решение. Мы добавили новый UIBarButtonItem в NavBar, который затем представляет новый ViewController, где мы помещаем только searchBar и ничего больше в NavBar, который, кажется, работает. Использование выбранного ответа может быть лучшим решением, поскольку Apple с iOS 11 хочет, чтобы мы использовали этот новый дизайн, даже если он не дает нам того результата, который мы изначально хотели. Другим способом решения этой проблемы может быть пользовательский SearchBar, но это уже другая тема.