luk*_*szb 2 uiimage ios sdwebimage
我使用SDWebImage在图像缓存UICollectionView在我的iOS应用.
一切都很好,但是,当用户在集合视图上快速滚动时,在用缓存图像替换占位符之前总是有一点暂停.我相信这是由于缓存检查.为了获得更好的用户体验,我希望单元格在实际缓存图像后显示正确的图像而不是占位符.如果我可以获取缓存图像的本地(设备)文件系统路径并将其存储在Show实例中,并使用它(如果存在)而不是我的占位符,这将很容易.
有可能将成功块传递给setImageWithURL方法但是,它获得的唯一参数是UIImage实例(实际上在master分支中还有一个名为cached的BOOL变量也被传递).那么 - 是否有可能直接从UIImage实例获取图像的文件系统路径?或者我应该修改SDWebImage,以便将该信息传递给缓存实例?或者有没有更好的方法来实现我之前描述的目标?
我的Show类有imageURL,这里是show cell使用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
Run Code Online (Sandbox Code Playgroud)
有私有SDImageCache方法可以获取缓存映像的文件系统路径.我们可以将这些方法公之于众.只需将下面的代码放入,比如说,SDImageCache+Private.h并将其添加到您的项目中:
#import "SDImageCache.h"
@interface SDImageCache (PrivateMethods)
- (NSString *)defaultCachePathForKey:(NSString *)key;
- (NSString *)cachedFileNameForKey:(NSString *)key;
@end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6953 次 |
| 最近记录: |