Ho un UICollectionViewController che utilizza uno standard UICollectionViewFlowLayout
per visualizzare una singola colonna verticale di celle. Sto tentando di creare un'animazione di espansione/compressione su una cella quando viene toccata una cella. Io uso il seguente codice per ottenere questo risultato:UICollectionView l'animazione della modifica della dimensione della cella causa un comportamento indesiderato
- (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;
}
La proprietà 'selectedCellIndex' sul mio oggetto la gestione dice al modello di dati per restituire un formato espanso o collassato all'interno del heightForCellAtIndexpath:
[self.collectionView performBatchUpdates:nil completion:nil];
Poi il performBatchUpdates:completiong:
il metodo anima bene questo cambiamento di dimensione. Però! Quando si verifica l'animazione, la cella espandibile potrebbe causare una cella parzialmente visibile nella parte inferiore dello schermo per uscire dallo schermo.
Se questo è il caso e successivamente collasso questa cella, la cella ora disattivata scatterà alla sua posizione precedente senza animazione, mentre tutte le altre celle visibili si animeranno come desiderato. La mia intuizione dice che questo è il comportamento corretto poiché la cella è fuori dallo schermo quando viene eseguita l'animazione di compressione e non viene inclusa nel processo di rendering dell'animazione. La mia domanda diventa, come posso evitare che ciò accada?
Preferirei che tutte le celle si animino insieme, indipendentemente dal fatto che siano sullo schermo o meno. qualche idea?
Ho trovato un problema molto simile quando spuntavo su http://stackoverflow.com/questions/13698275/uicollectionview-moveitematindexpathtoindexpath-issues-moving-items-not-on-scr –
Sembra che le celle riutilizzabili si stiano intromettendo dell'animazione poiché la cella fuori schermo viene contrassegnata come pronta per il riutilizzo. Qualche idea su come impedire che una cella venga contrassegnata per il riutilizzo? –
Ho esattamente lo stesso problema e mi piacerebbe davvero una soluzione, anche se quella soluzione è un numero radar! – jrturton