У меня есть UICollectionView
, который отформатирован как одиночная, прокручиваемая по горизонтали строка по экрану. Он представляет собой следующие записи в очереди, поэтому, когда элементы добавляются и удаляются, это всегда происходит в индексе 0 (в левом углу окна), а затем все это перемещается вперед или назад на одно пространство. Это супер-простой в коде, просто:UICollectionView оживляет многоразовые ячейки?
[_collectionviewNextUp insertItemsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:0 inSection:0]]];
и
[_collectionviewNextUp deleteItemsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:0 inSection:0]]];
Все работает нормально, за исключением анимации для insertItemsAtIndexPaths:
и deleteItemsAtIndexPaths:
, в частности, когда элементы CollectionView выходят за край экрана , Пока в очереди осталось всего 6 элементов (число, которое можно увидеть сразу), оно прекрасно анимируется; но 7 предметов и более, и анимация становится странной. Удалите элемент (слева), и он также оживит одно добавленное справа; добавьте элемент (слева), и он также оживит одно удаляемое справа. Даже если длина очереди составляет 50, она всегда анимирует элемент №6 (последний видимый на экране), исчезающий и вновь появляющийся. Нет никаких ошибок или предупреждений или что-то еще, и у меня осталось правильное количество элементов в представлении после завершения анимации, оно просто анимирует добавленную/удаляемую ячейку по краю экрана.
Моя теория заключается в том, что повторно используемые ячейки оживляются. Звучит ли это так? Прокрутка влево и вправо работает отлично, но вставка и удаление кажутся только анимированными в парах, и они всегда «летают» и «вылетают» в одном направлении, как если бы кто-то занимал место другого. Он выглядит (к моему неопытенному глазу), подобно тому, как камера на конце перелетает и добавляется спереди, или тот, что спереди, перемещается в конец.
Я попытался провести исследование по этому вопросу, но все, что я могу найти, это проблемы с анимацией, которые вызывают ошибки и исключения, которые мои не делают. Кто-нибудь еще испытал это? И может ли кто-нибудь предложить исправление, в котором элемент Index 0 становится анимированным, а остальные просто плавно переходят на экран и выходят из него?
Удивительно, спасибо! И быстрый, простой вопрос: что мне нужно для подкласса, чтобы переопределить эти методы? Документация ставит их как часть 'UICollectionViewLayout', но в моем проекте я могу только найти« UICollectionView »,« UICollectionViewCell »и« UICollectionViewFlowLayout ». Являются ли Layout и FlowLayout тем же, или если нет, где я могу найти объект, чтобы я мог указать его на мой новый класс? – Nerrolken
'UICollectionViewLayout' - абстрактный базовый класс. «UICollectionViewFlowLayout» - это единственная конкретная реализация Apple. Если вы не предоставили свой собственный класс макета, вы используете 'UICollectionViewFlowLayout'. Вы можете установить макет в коде, установив свойство коллекции collectionViewLayout' или через инспектор атрибутов в Interface Builder. –