Как можно избежать пробелов под строкой поиска UICollectionView на устройствах с метками? - PullRequest
0 голосов
/ 15 февраля 2019

У меня есть UICollectionView с содержимым, которое я хочу прокрутить под прозрачной панелью навигации.У меня также есть UIView, который содержит UISearchBar, который пользователь может переключать, нажимая кнопку на панели навигации:

UICollectionView with contents that scroll below the transparent nav bar and custom search bar

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

Для устройства с выемкой между панелью поиска и контентом существует разрыв, когда поиск выполняетсяпанель отображается впервые.Затем, когда я начинаю поиск, интервал правильный.Если я отменяю и содержимое не помещается на экране (то есть представление коллекции можно прокручивать), есть разрыв в размере панели поиска.Если содержимое действительно помещается на экране, такого разрыва нет.

UICollectionView with contents that scroll below the transparent nav bar and custom search bar on device with notch

Ограничения устанавливаются в раскадровке.Единственный способ найти желаемое поведение - ограничить верхнюю часть представления коллекции верхним указателем макета - 64, что, безусловно, не идеально.

Очевидно, что здесь что-то не так с моими ментальными моделями.Как получить желаемое поведение на устройствах с и без надрезов и в идеале избежать магического числа в ограничении?

1 Ответ

0 голосов
/ 15 февраля 2019

Такое поведение обусловлено направляющими макета безопасной зоны .Для устройства с надрезом верхнее ограничение вычисляет расстояние от безопасной области (начиная с надреза).

Чтобы решить эту проблему, перейдите в раскадровку -> выберите CollectionView -> выберите верхнее ограничение.Вы увидите несколько параметров, связанных с ограничением в Инспекторе размера.Измените второй элемент на SuperView вместо Безопасная зона .

снимок экрана инспектора размера

...