загрузка изображений в UICollectionView и проблема кеширования - PullRequest
0 голосов
/ 09 мая 2020

Я заполнил collectionView изображениями из API и кэшировал его. Это работает, но при первоначальной загрузке изображений возникает проблема. ImageView занимает какое-то другое изображение из кеша collectionView на долю секунды, но его можно обнаружить и выглядит странно, вместо этого я хотел бы оставить его пустым, пока он не загрузится.

AF.request(imageurlstring).responseImage { response in

            if case .success(let image) = response.result {
                self.image = image
                imageChache.setObject(image, forKey: NSString(string: urlString))
            }
        }

enter image description here

Ответы [ 2 ]

1 голос
/ 09 мая 2020

Это происходит, потому что представление коллекции повторно использует ячейки и запросы на загрузку изображений ставятся в очередь. Вот почему для некоторых ячеек вы получаете эту множественную настройку изображений. Чтобы избежать множественной настройки, вы можете сохранить URL-адрес изображения где-нибудь внутри ячейки. И проверьте, соответствует ли он URL-адресу ответа.

 cellImageURL = imageurlstring 
 AF.request(imageurlstring).responseImage { response in

       if case  .success(let image) = response.result
          if cellImageURL == response.request.url {
             self.image = image
          }
          imageChache.setObject(image, forKey: NSString(string: urlString))
       }
 }
0 голосов
/ 09 мая 2020

Перед установкой любого нового изображения сделайте изображение нулевым. Поэтому добавьте self.image = nil перед следующей строкой:
self.image = image

...