3

У меня есть изображение url plist с 50 url изображений. Я пытаюсь отобразить это в UICollectionview, но он становится слишком медленным. Я показываю 9 ячеек (изображений) за раз, например 3x3 (3 строки и 3 столбца) . i отображает первые 9 изображений во время загрузки и следующие 9 изображений при следующей прокрутке.? Это возможно? Я попробовал SDWebImages для загрузки изображений, но не работал для меня. Пожалуйста, помогите мне.Как отобразить первые 9 изображений в UICollectionview?

КОД ВНУТРИ CollectionView cellForItemAtIndexPath:() кода комментарию займет много времени для загрузки изображения, что код используется для загрузки изображения из каталога документов, если изображение не существует, то я буду отображаться в одном держателе места изображение

cell = nil; 

    cell = (GMMCollectionViewCell *)[self.collectionView dequeueReusableCellWithReuseIdentifier:@"test" forIndexPath:indexPath]; 

    cell.tag = indexPath.row; 
    docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 



    NSString *path; 
    BOOL isImageLoaded = YES; 

///////////////////// ПРОБЛЕМА КОД: занимает слишком много времени для загрузки изображения ////////// ////////////

bookImage = [UIImage imageWithContentsOfFile:[NSString stringWithFormat:@"%@/%@", docPath, [[allbooksImage objectAtIndex:indexPath.row] lastPathComponent]]]; 

//////////////////////////////////////////////// //////////////////////////////////

if(bookImage == nil){ 
     isImageLoaded = NO; 
    } 
    if(!isImageLoaded){ 
     [[cell grid_image] setImage:[UIImage imageNamed:@"App-icon-144x144.png"]]; 
    } else{ 

     [[cell grid_image] setImage:bookImage]; 





    } 

    sharedManager.bookID=bookId; 

return cell; 

Это то, что IAM ожидает

enter image description here

Но IAM получать как это, App время загрузки Без прокрутки (первый изображение: 3 колонки пустые) enter image description here

App экрана после первой прокрутки (второе изображения: последняя колонка отображения 2 изображения, остальной части еще пусты) enter image description here

App экрана после долгой прокрутки (третье изображения: последняя Colum некоторых изображений там, остальных столбцов до сих пор пусто) enter image description here

App экран снова прокручивать вверх, так что первый образ изменился enter image description here

+2

Как именно SDWebImage не работает на вас? Покажите свой код. –

+0

Вы скачиваете эти изображения самостоятельно? – Exploring

+0

да проверить мой обновленный вопрос для загрузки изображений – Navi

ответ

1

Вы можете попробовать следующий код

[[cell grid_image] setImage:nil]; 

dispatch_queue_t concurrentQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); 

dispatch_async(concurrentQueue, ^{ 
    bookImage = [UIImage imageWithContentsOfFile:[NSString stringWithFormat:@"%@/%@", docPath, [[allbooksImage objectAtIndex:indexPath.row] lastPathComponent]]]; 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     if (bookImage) 
     { 
      [[cell grid_image] setImage:bookImage]; 
     } 
     else 
     { 
      [[cell grid_image] setImage:[UIImage imageNamed:@"App-icon-144x144.png"]]; 
     } 
    }); 

}); 

надеюсь, что это сработает для вас.

+0

Его работа хорошая, но загрузка одинаковых изображений в нескольких местах, почему? – Navi

+0

@Navi Я изменил свой ответ, теперь проверяю один раз. – Exploring

+0

ОК я запускаю этот код сейчас. зачем нам 3 отправки асинчей? – Navi

Смежные вопросы