前一阵子某某大牛的YYKit 获得了无数的star, 一直也没时间尝试着使用。所以准备抽时间学习一下,优化一下自己的项目。Yeah!
我用的是cocopods管理三方库,简单快速,(网络好),也可以去github上自己下载。 上面其实就有使用的方法非常简单,但是本人还是尝试着用了一下。
第一步: #import <YYWebImage.h> // 加载网络图片 _imageView.yy_imageURL = [NSURL URLWithString:ImageUrl];
// 加载本地图片 _imageView.yy_imageURL = [NSURL fileURLWithPath:@"/tmp/logo.png"];
// 只需要把 UIImageView
替换为 YYAnimatedImageView
即可。 UIImageView *imageView = [YYAnimatedImageView new]; imageView.yy_imageURL = [NSURL URLWithString:ImageUrl];
// 渐进式:边下载边显示 [imageView yy_setImageWithURL:[NSURL URLWithString:ImageUrl] options:YYWebImageOptionProgressive];
// 渐进式加载,增加模糊效果和渐变动画 [_imageView yy_setImageWithURL:[NSURL URLWithString:ImageUrl] options:YYWebImageOptionProgressiveBlur | YYWebImageOptionSetImageWithFadeAnimation | YYWebImageOptionRefreshImageCache]; 这里要重要的是这个枚举 我们可以点击=进去看一下作者给我们造好的轮子。 这里我只是把你里面的类型全部粘贴出来,就不一一说明了,大家可以回去自己体验一下。
/// The options to control image operation. typedef NS_OPTIONS(NSUInteger, YYWebImageOptions) {复制代码
/// Show network activity on status bar when download image. YYWebImageOptionShowNetworkActivity = 1 << 0, /// Display progressive/interlaced/baseline image during download (same as web browser). YYWebImageOptionProgressive = 1 << 1, /// Display blurred progressive JPEG or interlaced PNG image during download. /// This will ignore baseline image for better user experience. YYWebImageOptionProgressiveBlur = 1 << 2, /// Use NSURLCache instead of YYImageCache. YYWebImageOptionUseNSURLCache = 1 << 3, /// Allows untrusted SSL ceriticates. YYWebImageOptionAllowInvalidSSLCertificates = 1 << 4, /// Allows background task to download image when app is in background. YYWebImageOptionAllowBackgroundTask = 1 << 5, /// Handles cookies stored in NSHTTPCookieStore. YYWebImageOptionHandleCookies = 1 << 6, /// Load the image from remote and refresh the image cache. YYWebImageOptionRefreshImageCache = 1 << 7, /// Do not load image from/to disk cache. YYWebImageOptionIgnoreDiskCache = 1 << 8, /// Do not change the view's image before set a new URL to it. YYWebImageOptionIgnorePlaceHolder = 1 << 9, /// Ignore image decoding. /// This may used for image downloading without display. YYWebImageOptionIgnoreImageDecoding = 1 << 10, /// Ignore multi-frame image decoding. /// This will handle the GIF/APNG/WebP/ICO image as single frame image. YYWebImageOptionIgnoreAnimatedImage = 1 << 11, /// Set the image to view with a fade animation. /// This will add a "fade" animation on image view's layer for better user experience. YYWebImageOptionSetImageWithFadeAnimation = 1 << 12, /// Do not set the image to the view when image fetch complete. /// You may set the image manually. YYWebImageOptionAvoidSetImage = 1 << 13, /// This flag will add the URL to a blacklist (in memory) when the URL fail to be downloaded, /// so the library won't keep trying. YYWebImageOptionIgnoreFailedURL = 1 << 14, };
// 1. 下载图片 // 2. 获得图片下载进度 // 3. 调整图片大小、加圆角 // 4. 显示图片时增加一个淡入动画,以获得更好的用户体验
[_imageView yy_setImageWithURL:[NSURL URLWithString:ImageUrl]复制代码
placeholder:nil options:YYWebImageOptionSetImageWithFadeAnimation progress:^(NSInteger receivedSize, NSInteger expectedSize) { // progress = (float)receivedSize / expectedSize; } transform:^UIImage *(UIImage *image, NSURL *url) { image = [image yy_imageByResizeToSize:CGSizeMake(375, 667) contentMode:UIViewContentModeCenter]; return [image yy_imageByRoundCornerRadius:10]; } completion:^(UIImage *image, NSURL *url, YYWebImageFromType from, YYWebImageStage stage, NSError *error) { if (from == YYWebImageFromDiskCache) { NSLog(@"load from disk cache"); } }];
最后当然就是缓存了
YYImageCache *cache = [YYWebImageManager sharedManager].cache;
cache.memoryCache.totalCost; cache.memoryCache.totalCount; cache.diskCache.totalCost; cache.diskCache.totalCount;
// clear cache [cache.memoryCache removeAllObjects]; [cache.diskCache removeAllObjects];
// clear disk cache with progress [cache.diskCache removeAllObjectsWithProgressBlock:^(int removedCount, int totalCount) { // progress } endBlock:^(BOOL error) { // end }];