Я использую SDWebImage для кэширования изображений на UICollectionView в моем приложении для iOS.
Однако все в порядке, когда пользователь быстро прокручивает представление коллекции, всегда возникает небольшая пауза, прежде чем местозаполнитель заменяется кэшированным изображением. Я считаю, что это связано с проверками кеша. Для лучшего взаимодействия с пользователем я хотел бы, чтобы в ячейках отображалось правильное изображение вместо заполнителя, как только изображение фактически кэшируется. Это было бы легко, если бы я мог получить путь к кэшированному изображению в локальной файловой системе (устройства) и сохранить его в экземпляре Show и использовать его (если существует) вместо моего заполнителя.
Существует возможность передать блок успеха методу setImageWithURL Однако единственным аргументом, который он получает, является UIImage экземпляр (на самом деле в основной ветке есть также переменная BOOL с именем cached< /em> тоже передается). Итак, есть ли возможность получить путь к файловой системе изображения прямо из экземпляра UIImage? Или мне следует изменить SDWebImage, чтобы он передал эту информацию в кэшированный экземпляр? Или есть лучший способ достичь цели, которую я описал ранее?
В моем классе Show есть imageURL, и вот как ячейка show использует 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