У меня есть UICollectionViewController, который использует стандартный UICollectionViewFlowLayout
для отображения одного вертикального столбца ячеек. Я пытаюсь создать анимацию expand/collapse на ячейке при прослушивании ячейки. Я использую следующий код для достижения этой цели:Изменение размера анимирующей ячейки UICollectionView вызывает нежелательное поведение
- (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:
метод анимирует это изменение размера красиво. Однако! Когда происходит анимация, расширяющаяся ячейка может вызвать частично видимую ячейку в нижней части экрана, чтобы выйти из экрана.
Если это так, и я впоследствии разрушаю эту ячейку, ячейка теперь вне экрана будет привязана к ее старому положению без анимации, в то время как все другие видимые ячейки ожидают по желанию. Моя интуиция говорит, что это правильное поведение, так как ячейка выключена, когда выполняется анимация коллапса, и она не включена в процесс рендеринга анимации. Мой вопрос становится, как я могу предотвратить это?
Я бы предпочел, чтобы все ячейки оживлялись вместе, независимо от того, находятся они вне экрана или нет. Есть предположения?
Я нашел очень похожую проблему, когда выворачивался вокруг http://stackoverflow.com/questions/13698275/uicollectionview-moveitematindexpathtoindexpath-issues-moving-items-not-on-scr –
Кажется, что повторно используемые ячейки мешают анимации, так как внеэкранная ячейка становится помеченной как готовая к повторному использованию. Любые мысли о том, как предотвратить помеху ячейки для повторного использования? –
У меня точно такая же проблема, и мне бы очень понравилось решение, даже если это решение - номер радара! – jrturton