-1

Я создаю приложение Xcode, которое имеет вертикальную прокрутку UICollectionView представлений с большими ImageViews в них, подобно Instagram. Этот Collection View первоначально загружал очень маленькие изображения в ImageViews в каждом UICollectionViewCell, что ускоряло загрузку приложения и мгновенно делало загрузку отдельных ячеек.Handle loading & refreshing на CollectionView Objective-C

я недавно внес изменения в приложение, которое делает Collection View Тензодатчики гораздо большие изображения в их просмотра изображения, что приводит к 2 вещи в некоторых клетках:

1) Время ожидания, где ImageView не является пустым, пока изображение загружается

2) Временное повторение старых изображений в клетках, которые были повторно использованы из очереди в то время как новое изображение загружается

Ниже приведен код, который я использую, чтобы инициализировать свои клетки:

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UICollectionViewCell *cell; 
    NSString *CellIdentifier; 
    UIImageView *thumbnailImage; 

    CellIdentifier = @"FollowersFeed"; 
    cell = [collectionView 
dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:indexPath]; 
    thumbnailImage=(UIImageView *)[cell viewWithTag:1]; 
    dict=[follwerFeed objectAtIndex:indexPath.row]; 

    NSString *nurl=[dict valueForKey:@"video"]; 
    [thumbnailImage setImageWithURL:[NSURL URLWithString:nurl]]; 

    //........ 

    return cell; 

} 

Для того, чтобы исправить функциональные возможности этого приложения с этими новыми большими картинками, мне нужно решить проблему загрузки по

1) Показывая спиннинг индикатора активности в то время просмотра изображения в коллекции Просмотр нагрузках.

2) Удалите ссылку изображения из предыдущего изображения до того, как ячейка будет повторно использована в очереди.

Я считаю, что если я могу понять, как сделать оба из них, то скроллинг для приложения будут работать так же, как легко, как это было с меньшими изображениями

ответ

0

Вы можете попробовать https://github.com/rs/SDWebImage - Asynchronous изображений загрузчик с кэшем поддержка как категория UIImageView

Простота в использовании:

#import <SDWebImage/UIImageView+WebCache.h> 
... 
[imageView sd_setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"] 
      placeholderImage:[UIImage imageNamed:@"placeholder.png"]]; 
0

Вы можете попробовать NSURLRequest

NSURLRequest *request = [NSURLRequest requestWithURL:imageUrl]; 
[NSURLConnection sendAsynchronousRequest:request 
            queue:[NSOperationQueue mainQueue] 
         completionHandler:^(NSURLResponse * response, 
              NSData * data, 
              NSError * error) { 
          if (!error){ 
           cell.thumbnailImage.image = [UIImage imageWithData:data]; 
          } 
         }];