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