YYWebImage的尝试

1,136 阅读3分钟

前一阵子某某大牛的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     }];

这里是YYWebImagegithub地址