定期更改UICollectionView单元格图像

问题描述:

我正在使用UICollectionView开发一个IOS 10.x应用程序,并且想要定期更改特定单元格的图像。定期更改UICollectionView单元格图像

下面的代码显示了当前的实现。尽管它应该每半秒更换一次单元格背景图像,但它会立即更改图像,忽略0.5秒的NSThread SleepAt间隔。

我怀疑有关主线程处理或ReloadItem方法的问题,但尚未得出明确结论。任何有识之士都非常欢迎!谢谢。

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

我认为''UIImageView'财产animationImages'可能更适合你正在尝试什么去做。 –

+0

dispatch_async异步执行代码,这就是为什么您的重新加载在行[NSThread sleepForTimeInterval:0.5]之前发生的原因。 – iAviator

+0

更好地使用'NSTimer'。 – iphonic

您应该使用performBatchUpdates(_:completion:)方法并在其中添加for循环。

请记住不要在块内部保留强引用以避免保留周期。

编辑:

,并在完成模块,您可以检查是否完成,并添加您的NSThread方法