Comment get le path du système de files à l'image caching avec SDWebImage (iOS)

J'utilise SDWebImage pour la caching d'image à UICollectionView dans mon application iOS.

Tout va bien, cependant, lorsque l'user défile rapidement sur la vue de collection, il y a toujours une petite pause avant que l'espace réservé ne soit remplacé par l'image caching. Je crois que cela est dû à des vérifications de cache. Pour une meilleure expérience user, j'aimerais que les cellules affichent l'image correcte au lieu de l'espace réservé une fois qu'une image est effectivement caching. Ce serait facile si je pouvais get le path du système de files local (device) de l'image caching et le stocker à l'instance Show , et l'utiliser (s'il existe) au lieu de mon espace réservé.

Il y a la possibilité de passer le bloc de succès à la méthode setImageWithURL Cependant, le seul argument qu'il obtient est l'instance UIImage (en fait dans la twig master il y a aussi une variable BOOL appelée cachée étant passée aussi). Donc – est-il possible d'get le path du système de files de l'image directement à partir de l'instance UIImage ? Ou devrais-je modifier SDWebImage afin qu'il transmette cette information à l'instance en cache? Ou y a-t-il une meilleure façon d'atteindre un objective que j'ai décrit plus tôt?

Ma class Show a imageURL et voici comment utiliser la cellule 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 URLWithSsortingng:show.imageURL] placeholderImage:[UIImage imageNamed:@"placeholder.png"]]; } _show = show; } } @end 

J'ai eu un problème similaire, voir: SDWebImage montrant l'espace réservé pour les images dans le cache

Fondamentalement, j'ai fourchu le projet pour résoudre ce problème.

Mettre à jour:

Vous pouvez simplement le faire pour éviter le scintillement (cela fonctionne avec la twig principale du projet):

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

Il existe des methods SDImageCache privées pour get le path du système de files vers l'image caching. Nous pouvons rendre ces methods publiques avec une catégorie. Il suffit de mettre le code ci-dessous dans le, disons, SDImageCache+Private.h et l'append à votre projet:

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