定期更改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];
}
答
您应该使用performBatchUpdates(_:completion:)方法并在其中添加for循环。
请记住不要在块内部保留强引用以避免保留周期。
编辑:
,并在完成模块,您可以检查是否完成,并添加您的NSThread方法
我认为''UIImageView'财产animationImages'可能更适合你正在尝试什么去做。 –
dispatch_async异步执行代码,这就是为什么您的重新加载在行[NSThread sleepForTimeInterval:0.5]之前发生的原因。 – iAviator
更好地使用'NSTimer'。 – iphonic