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