我正在使用UICollectionView开发一个IOS 10.x应用程序,并希望定期更改特定单元格的图像。
下面的代码显示了当前的实现。即使它应该每半秒改变一次细胞背景图像,它会立即改变图像,而不考虑NSThread SleepAt间隔为0.5秒。
我怀疑主线程处理或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 :(得分:0)
您应该使用performBatchUpdates(_:completion:)方法并在其中添加for循环。
请记住不要在块内保留强引用,以避免保留周期。
修改强>
并在完成块中,您可以检查是否已完成并添加NSThread方法