У меня есть UICollectionView
с содержимым, которое я хочу прокрутить под прозрачной панелью навигации.У меня также есть UIView
, который содержит UISearchBar
, который пользователь может переключать, нажимая кнопку на панели навигации:
КакИзображение выше показывает, это хорошо работает для устройства без надреза.Я достигаю этого, устанавливая верхнюю часть вставки контента на searchController.searchBar.frame.size.height
, а верхнюю часть смещения контента на -collectionView.contentInset.top - (navigationController?.navigationBar.frame.size.height ?? 0) - UIApplication.shared.statusBarFrame.size.height)
.
Для устройства с выемкой между панелью поиска и контентом существует разрыв, когда поиск выполняетсяпанель отображается впервые.Затем, когда я начинаю поиск, интервал правильный.Если я отменяю и содержимое не помещается на экране (то есть представление коллекции можно прокручивать), есть разрыв в размере панели поиска.Если содержимое действительно помещается на экране, такого разрыва нет.
Ограничения устанавливаются в раскадровке.Единственный способ найти желаемое поведение - ограничить верхнюю часть представления коллекции верхним указателем макета - 64, что, безусловно, не идеально.
Очевидно, что здесь что-то не так с моими ментальными моделями.Как получить желаемое поведение на устройствах с и без надрезов и в идеале избежать магического числа в ограничении?