UICollectionView в представлении, которое скользит открывать / закрывать - вызывая пропущенные кадры - PullRequest
0 голосов
/ 01 апреля 2020

В некоторых приложениях имеется большая прокрутка (ie youtube, reddit, facebook). Я пытаюсь реализовать что-то в аналогичном приложении на основе канала: я добавляю подзаголовок под панелью навигации, которая открывается, когда пользователь прокручивает вверх (перетаскивает вниз), или закрывает, когда пользователь прокручивает вниз (перетаскивает вверх). Если пользователь прокручивает до 50 дп, он полностью открывает представление подзаголовка и показывает его на полной высоте 50 дп, непосредственно под панелью навигации. Если пользователь прокручивает вниз на 50 dp, представление подзаголовка полностью скрывается на высоте 0.

В этом представлении подзаголовка я реализую UICollectionView с горизонтальной прокруткой, высота которого составляет около 50 dp и содержит, возможно, 15-20 ячеек. Каждая из этих ячеек содержит текст (без изображений).

Когда пользователь прокручивает вверх и вниз, UICollectionView в подзаголовке в основном таков, что он переходит от 0dp в высоту до 50dp в высоту, назад и вперед. Это фактически полностью скрывает UICollectionView или заставляет его снова появляться.

Похоже, у меня возникают очень незначительные проблемы с производительностью, и я хочу оптимизировать это. Я не получаю последовательные пропущенные кадры, но я вижу случайное заикание - чего не должно случиться для чего-то такого простого.

Я попытался установить точки останова в cellForIndexPath и layoutSubviews и попытаться увидеть, какие функции вызываются, когда я анимирую, открываю / закрываю UICollectionView. Похоже, что layoutSubview для каждой из удаленных ячеек (3 видны, 1 лишнее исключено, поэтому 4 вызова layoutSubview из ячеек) вызывается каждый раз, когда подзаголовок открывается и закрывается. Я не вижу данных перезагрузки вызова UICollectionView (у меня они переклассифицированы и переопределяются), и я не вижу вызова cellForIndexPath.

Что еще может вызывать в этих состояниях анимации отображения / скрытия?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...