Я хочу изменить размер кадра UICollectionView
в анимации, которая запускается рядом с анимированной вставкой ячейки в один и тот же вид коллекции внутри блока performBatchUpdates:completion:
.
Это код, который запускает вставку ячейки:
[collectionView performBatchUpdates:^{
indexPathOfAddedCell = ...;
[collectionView insertItemsAtIndexPaths:@[ indexPathOfAddedCell ]];
} completion:nil];
Поскольку вставка ячейки вызывает изменение вида коллекции contentSize
, я попробовал KVO-регистрацию для изменений этого свойства, а затем инициировал обновление кадра представления коллекции из обработчика KVO.
Проблема с этим подходом заключается в том, что триггер KVO для contentSize
срабатывает слишком поздно: анимация вставки ячейки уже завершена в то время (на самом деле триггеры KVO прямо перед обработчиком завершения performBatchUpdates:completion:
вызывается, но после анимация воспроизведена в пользовательском интерфейсе).
Я не использую автомат.
Изменить: я положил пример проекта, чтобы продемонстрировать свою проблему на GitHub.
Изменить 2: Я должен упомянуть, что мне это нужно для компонента, который я пишу (OLEContainerScrollView
), который должен быть 100% независимым представления коллекции. Из-за этого я не могу подклассифицировать макет представления коллекции и не влияю на код, запускающий анимацию ячеек. В идеале решение также будет работать для UITableView
, которое проявляет то же поведение.