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];
}
Ich denke, dass '' UIImageView' animationImages' Eigenschaft besser geeignet sein können, für das, was Sie versuchen, machen. –
dispatch_async führt den Code asynchron aus, weshalb das erneute Laden vor der Zeile [NSThread sleepForTimeInterval: 0.5] stattfindet. – iAviator
Verwenden Sie besser 'NSTimer'. – iphonic