glide from example cache ios uiimage sdwebimage

ios - from - uiimage cache swift



Cómo obtener la ruta del sistema de archivos a la imagen en caché con SDWebImage(iOS) (2)

Existen métodos privados SDImageCache para obtener la ruta del sistema de archivos a la imagen en caché. Podemos hacer que estos métodos sean públicos con una categoría. Simplemente coloque el código siguiente en, digamos, SDImageCache+Private.h añádalo a su proyecto:

#import "SDImageCache.h" @interface SDImageCache (PrivateMethods) - (NSString *)defaultCachePathForKey:(NSString *)key; - (NSString *)cachedFileNameForKey:(NSString *)key; @end

Estoy usando SDWebImage para el almacenamiento en caché de imágenes en UICollectionView en mi aplicación iOS.

Todo está bien, sin embargo, cuando el usuario se desplaza rápidamente sobre la vista de colección, siempre hay poca pausa antes de que el marcador de posición se reemplace con la imagen en caché. Creo que esto se debe a los controles de caché. Para una mejor experiencia del usuario, me gustaría que las celdas muestren la imagen adecuada en lugar del marcador de posición una vez que la imagen está en la memoria caché. Esto sería fácil si pudiera obtener la ruta de la imagen en caché del sistema de archivos local (dispositivo) y almacenarla en la instancia de Mostrar , y usarla (si existe) en lugar de mi marcador de posición.

Existe la posibilidad de pasar el bloque de éxito al método setImageWithURL. Sin embargo, el único argumento que obtiene es la instancia de UIImage (en realidad, en la rama maestra también se pasa la variable BOOL llamada en caché ). Entonces, ¿existe la posibilidad de obtener la ruta del sistema de archivos de la imagen directamente desde la instancia de UIImage ? ¿O debería modificar SDWebImage para que pase esa información a una instancia en caché? ¿O hay alguna forma mejor de alcanzar un objetivo que describí antes?

Mi clase Show tiene imageURL y aquí está cómo show cell use SDWebImage:

#import "ShowCell.h" #import <SDWebImage/UIImageView+WebCache.h> @implementation ShowCell @synthesize imageView = _imageView; @synthesize label = _label; @synthesize show = _show; - (void)setShow:(Show *)show { if (_show != show) { self.label.text = show.title; if (show.imageURL) { [self.imageView setImageWithURL:[NSURL URLWithString:show.imageURL] placeholderImage:[UIImage imageNamed:@"placeholder.png"]]; } _show = show; } } @end


Tuve un problema similar, vea: SDWebImage que muestra el marcador de posición para las imágenes en la memoria caché

Básicamente, bifurqué el proyecto para resolver esto.

Actualizar:

Puede hacer esto para evitar el parpadeo (esto funciona con la rama principal del proyecto):

[imageView setImageWithURL:url placeholderImage:imageView.image options:0 progress:^(NSUInteger receivedSize, long long expectedSize) { imageView.image = [UIImage imageNamed:@"QuestionMarkFace.png"]; } completed:nil];