2017-02-15 6 views
0

Ich entwickle eine IOS 10.x-Anwendung mit UICollectionView und möchte das Bild bestimmter Zellen in regelmäßigen Abständen ändern.Ändern von UICollectionView-Zellenbild in regelmäßigen Abständen

Der folgende Code zeigt die aktuelle Implementierung. Obwohl es das Hintergrundbild der Zelle jede halbe Sekunde ändern sollte, ändert es die Bilder sofort ohne Berücksichtigung des NSThread SleepAt-Intervalls von 0,5 Sekunden.

Ich vermute etwas über die Haupt-Thread-Behandlung oder die ReloadItem-Methode, aber hat keine klare Schlussfolgerung erreicht. Jede Einsicht ist sehr willkommen! Vielen Dank.

NSNumber* originalCardSelected; 
int position; 

for (int i = 0; i < [opponentOriginalCardArray count]; i++) { 

    originalCardSelected = [opponentOriginalCardArray objectAtIndex:i]; 
    position = [self convertLevelDataPositionToCellViewPosition:[originalCardSelected intValue]]; 

    NSMutableArray *tmpBackgroundAssets = [self getNewAssetBackgroundBasedOnBackgroundType:playbackBackground Index:position]; 
    self.backgroundAssets = tmpBackgroundAssets; 

    dispatch_async(dispatch_get_main_queue(), ^{ 



     [collectionViewRoot reloadItemsAtIndexPaths:[collectionViewRoot indexPathsForVisibleItems]]; 
    }); 
    [NSThread sleepForTimeInterval:0.5]; 


} 
+0

Ich denke, dass '' UIImageView' animationImages' Eigenschaft besser geeignet sein können, für das, was Sie versuchen, machen. –

+0

dispatch_async führt den Code asynchron aus, weshalb das erneute Laden vor der Zeile [NSThread sleepForTimeInterval: 0.5] stattfindet. – iAviator

+0

Verwenden Sie besser 'NSTimer'. – iphonic

Antwort

0

sollten Sie performBatchUpdates(_:completion:) Methoden verwenden und Ihre Inneren für Schleife hinzuzufügen.

Denken Sie daran, dass keine starken Referenzen innerhalb des Blocks enthält, um Retain-Zyklen zu vermeiden.

EDIT:

und im Abschluss Block, können Sie, wenn fertig überprüfen und Ihre NSThread Methoden hinzufügen

Verwandte Themen