У меня есть UICollectionViewController, который использует стандартный UICollectionViewFlowLayout
для отображения одного вертикального столбца ячеек. Я пытаюсь создать анимацию expand/collapse на ячейке при прослушивании ячейки. Для этого я использую следующий код:
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath (NSIndexPath *)indexPath
{
[self.feedManager setCurrentlySelectedCellIndex:indexPath.item];
[self.collectionView performBatchUpdates:nil completion:nil];
}
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
//Return the size of each cell to draw
CGSize cellSize = (CGSize) { .width = 320, .height = [self.feedManager heightForCellAtIndexPath:indexPath] };
return cellSize;
}
Свойство 'selectedCellIndex' на моем управляющем объекте указывает модели данных возвращать расширенный или свернутый размер внутри heightForCellAtIndexpath:
[self.collectionView performBatchUpdates:nil completion:nil];
Затем метод performBatchUpdates:completiong:
прекрасно анимирует это изменение размера. Однако! Когда происходит анимация, расширяющаяся ячейка может вызвать частично видимую ячейку в нижней части экрана, чтобы выйти из экрана.
Если это так, и я впоследствии разрушаю эту ячейку, ячейка теперь вне экрана будет привязана к своей старой позиции без анимации, в то время как все другие видимые ячейки ожидают по желанию. Моя интуиция говорит, что это правильное поведение, так как ячейка выключена, когда выполняется анимация коллапса, и она не включена в процесс рендеринга анимации. Мой вопрос становится, как я могу предотвратить это?
Я бы предпочел, чтобы все ячейки оживлялись вместе, независимо от того, находятся ли они вне экрана или нет. Любые мысли?