2017-02-15 8 views
0

Я разрабатываю приложение IOS 10.x с использованием UICollectionView и хотел бы изменить изображение определенных ячеек с регулярным интервалом.Изменение изображения ячейки UICollectionView с регулярным интервалом

В приведенном ниже коде показана текущая реализация. Несмотря на то, что он должен менять фоновое изображение ячейки каждые полторы секунды, он немедленно меняет изображения, не обращая внимания на интервал 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

Я думаю, что '' UIImageView' animationImages' свойство может быть более подходящим для того, что вы пытаетесь делать. –

+0

dispatch_async выполняет асинхронный код, поэтому ваша перезагрузка происходит до строки [NSThread sleepForTimeInterval: 0.5]. – iAviator

+0

Лучше использовать 'NSTimer'. – iphonic

ответ

0

Вы должны использовать performBatchUpdates(_:completion:) методы и добавить свой цикл внутри него.

Помните, что не содержит сильных ссылок внутри блока, чтобы избежать удержаний циклов.

EDIT:

и в блоке завершения, вы можете проверить, если закончил и добавить свои методы NSThread