J'ai un UICollectionViewController que l'utilisation d'un standard UICollectionViewFlowLayout
d'afficher sur une seule colonne verticale de cellules. Je suis d'essayer de créer une expand/collapse animation d'une cellule lorsqu'une cellule est exploité. J'utilise le code suivant pour obtenir ce résultat:
- (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;
}
Le "selectedCellIndex' bien sur ma gestion de l'objet indique le modèle de données de retour d'un développé ou réduit la taille à l'intérieur de heightForCellAtIndexpath:
[self.collectionView performBatchUpdates:nil completion:nil];
Puis l' performBatchUpdates:completiong:
méthode anime ce changement de taille bien. Toutefois! Lorsque l'animation se produit, l'expansion de la cellule peut entraîner une partie de la cellule visible au bas de l'écran pour aller hors de l'écran.
Si c'est le cas et j'ai par la suite de l'effondrement de cette cellule, le maintenant hors de l'écran, les cellules composant logiciel enfichable à son ancienne position, sans animation, tandis que toutes les autres cellules visibles animer comme souhaité. Mon intuition vous dit que c'est le bon comportement depuis la cellule est hors de l'écran lors de l'effondrement de l'animation est en cours d'exécution et n'est pas inclus dans l'animation de processus de rendu. Ma question est, comment puis-je éviter cela?
Je préfère que toutes les cellules pour animer l'ensemble, peu importe si elles sont hors de l'écran ou pas. Toutes les pensées?