Как я должен преформировать анимацию смены кадров вида коллекции?
Я пытаюсь оживить рост моего UICollectionView
с помощью UIViewPropertyAnimator
. Пока высота представления коллекции прекрасно анимируется после завершения анимации, я получаю странное поведение прокрутки, как будто ячейки находятся в разных местах на плоскости прокрутки.
Чтобы обойти это, я попытался, установив contentInsetAdjustmentBehavior
равно never
Обновление фрейма в обработчике завершения (это работает только тогда, когда я не анимирую фрейм) и, наконец, анимация слоя представления коллекции напрямую, а затем обновление фрейма безрезультатно.
В моем случае, я не требую изменения размера ячеек. Я просто закрываю окно на видимые ячейки, поэтому я решил анимировать слой, который не работал...
Какие-либо предложения?
Я связал репозиторий, освещающий проблему: https://github.com/louiss98/CollectionViewFrameAnimatorTest
1 ответ
Я полагаю, что проблема заключалась где-то в том, как преобразование потока управляло изменением границ представления коллекции, и как соответствующие вкладки прокрутки корректируются соответствующим образом.
Поэтому вместо создания собственного макета представления коллекции, который мог бы обрабатывать изменение фрейма и размещать ячейки вручную, я решил обернуть представление коллекции в представление и анимировать фрейм представлений. Представление будет предварительно маскировать, обрезая его подпредставления.
Таким образом, представление коллекции никогда не меняет фрейм, таким образом, разметка потока не должна пересчитывать позиции ячейки.
Одна вещь, в которой я до сих пор не уверен, это то, почему именно странное поведение прокрутки произошло. Я собираюсь читать на contentInsetAdjustmentBehavior
, а также UICollectionViewFlowLayout
и надеюсь найти в чем проблема.