2013-04-05 8 views
12

Ho un UICollectionView e voglio aggiungere l'animazione a ogni cella.Ciclo continuo di tutte le celle in UICollectionView

Attualmente sto usando

for(UICollectionView *cell in collectionView.visibleCells){ 
    //add animation to cell here 
} 

Ma che si applica solo l'animazione per le celle visibili e non appena ho scorrere verso il basso e la cellula non è più visibile l'animazione si ferma.

Come si esegue il ciclo di tutte le celle nello UICollectionView?

+0

Sto cercando di ottenere qualcosa di simile. Ma ottengo zero elementi in celle visibili. In quali punti questo array viene popolato? –

risposta

9

Vorrei andare su questo in un modo diverso, probabilmente. Se vuoi animare le celle, puoi impostare una proprietà shouldAnimate = YES. Quindi nel tuo collectionView:cellForItemAtIndexPath: controlla quella proprietà e applica l'animazione se necessario (o rimuovila).

Dopo aver impostato la proprietà, ricaricare solo visibleCells: [collectionView reloadItemsAtIndexPaths:collectionView.indexPathsForVisibleItems].

Ora, poiché l'animazione viene fornita quando viene richiesta una cella tramite il Protocollo origine dati, si ottiene anche l'animazione quando si scorre.

+0

Wow è geniale e funziona come un incantesimo, grazie mille :) – user1838169

+0

Ciao, una (sciocca) domanda. Il reloadItemsAtIndexPaths va nella stessa collezioneView: cellForItemAtIndexPath: appena dopo aver controllato la proprietà? –

+0

No, mettilo nel gestore per un pulsante, ad esempio. Inserendolo in un 'collectionView: cellForItemAtIndexPath:' inserirà il codice in un ciclo. non consigliato. – fguchelaar