2015-10-22 1 views
1

Я хочу использовать imageView.af_setImageWithURL(URL) вместе с AutoPurgingImageCache от AlamofireImage.Как поместить изображение в AutoPurgingImageCache после завершения af_setImageWithURL?

Как я могу сообщить, что af_setImageWithURL выбрал изображение, чтобы я мог поместить его в свой кеш? Потому что это сделано в фоновом режиме.

Я бы предпочел что-то вроде: imageView.af_imageFromCache(URL), которое устанавливает изображение из кеша, если оно уже есть или в противном случае загружает асинхронный режим, затем устанавливает изображение и сохраняет его в кеше.

ответ

4

Общее использование ImageDownloader, которое использует UIImageView, уже помещает изображение в AutoPurgingImageCache автоматически. Каждый раз, когда вы используете imageView.af_setImageWithURL(URL), он попытается вытащить изображение из кеша изображения, если он существует. Если изображение еще не находится в кеше, оно начнет загрузку на примере ImageDownloader.

+0

Это многое объясняет! Есть ли способ получить общий объект ImageDownloader, если мне нужно извлечь изображение из него вручную для другого использования, чем добавить его в 'UIView'? – funkenstrahlen

+0

Я создал новую тему для этого нового вопроса [прямо здесь] (http://stackoverflow.com/questions/33318935/alamofire-image-fetch-image-from-autopurgingimagecache-after-af-setimagewithurl) – funkenstrahlen

+0

(изменить) I как будто кеш не работает, если применяется фильтр. Есть ли способ кэшировать отфильтрованное изображение? – achi

0

СВИФТ 4,0

Set 'AutoPurgingImageCache' в AppDelegate так, что я могу получить доступ к нему в любом классе

вар Imagecache: AutoPurgingImageCache?

imageCache = AutoPurgingImageCache(
     memoryCapacity: 100_000_000, 
     preferredMemoryUsageAfterPurge: 60_000_000 
    ) 

Затем установите изображение в моем классе обслуживания

class func setImage(url : String,imageview:UIImageView) { 

    let imageCache = appDelegate.imageCache! 
    // Fetch 
    if let cachedAvatar = imageCache.image(withIdentifier: url){ 
     imageview.image = cachedAvatar 
    }else { 

     Alamofire.request(url).responseImage { response in 
      debugPrint(response) 
      debugPrint(response.result) 
      if let image = response.result.value { 
       imageview.image = image 
       // Add 
       imageCache.add(image, withIdentifier: url) 
      } 
     } 
    } 
} 
Смежные вопросы