2013-04-05 5 views
12

Ich habe eine UICollectionView und ich möchte Animation zu jeder Zelle hinzufügen.Looping durch alle Zellen in UICollectionView

Derzeit verwende ich

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

Aber das nur die Animation auf die sichtbaren Zellen gilt und sobald ich nach unten scrollen und die Zelle nicht mehr sichtbar ist die Animation stoppt.

Wie durchlaufe ich alle Zellen in der UICollectionView?

+0

Ich versuche etwas Ähnliches zu erreichen. Aber ich bekomme null Objekte in sichtbaren Zellen. An welchen Punkten wird dieses Array aufgefüllt? –

Antwort

9

Ich würde wahrscheinlich auf eine andere Art und Weise gehen. Wenn Sie die Zellen animieren möchten, können Sie eine Eigenschaft shouldAnimate = YES festlegen. Dann überprüfen Sie in Ihrer collectionView:cellForItemAtIndexPath: diese Eigenschaft und wenden Sie die Animation bei Bedarf an (oder entfernen Sie sie).

Laden Sie nach dem Festlegen der Eigenschaft nur die visibleCells: [collectionView reloadItemsAtIndexPaths:collectionView.indexPathsForVisibleItems].

Jetzt, da die Animation bereitgestellt wird, wenn eine Zelle über das Datenquellen-Protokoll angefordert wird, erhalten Sie die Animation auch beim Scrollen.

+0

Wow, das ist brilliant und funktioniert wie ein Charme, vielen Dank :) – user1838169

+0

Hallo, eine (dumme) Frage. Gehen die reloadItemsAtIndexPaths in dieselbe collectionView: cellForItemAtIndexPath: direkt nach dem Überprüfen der Eigenschaft? –

+0

Nein, legen Sie es in den Handler für eine Taste drücken Sie zum Beispiel. Platzieren Sie es in einem 'collectionView: cellForItemAtIndexPath:' würde Ihren Code in eine Schleife setzen. nicht empfohlen. – fguchelaar