Как я должен преформировать анимацию смены кадров вида коллекции?

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

Чтобы обойти это, я попытался, установив contentInsetAdjustmentBehavior равно neverОбновление фрейма в обработчике завершения (это работает только тогда, когда я не анимирую фрейм) и, наконец, анимация слоя представления коллекции напрямую, а затем обновление фрейма безрезультатно.

В моем случае, я не требую изменения размера ячеек. Я просто закрываю окно на видимые ячейки, поэтому я решил анимировать слой, который не работал...

Какие-либо предложения?

Я связал репозиторий, освещающий проблему: https://github.com/louiss98/CollectionViewFrameAnimatorTest

1 ответ

Я полагаю, что проблема заключалась где-то в том, как преобразование потока управляло изменением границ представления коллекции, и как соответствующие вкладки прокрутки корректируются соответствующим образом.

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

Таким образом, представление коллекции никогда не меняет фрейм, таким образом, разметка потока не должна пересчитывать позиции ячейки.

Одна вещь, в которой я до сих пор не уверен, это то, почему именно странное поведение прокрутки произошло. Я собираюсь читать на contentInsetAdjustmentBehavior, а также UICollectionViewFlowLayout и надеюсь найти в чем проблема.

Другие вопросы по тегам