YYWebImage的尝试

作者: iOSTbag | 来源:发表于2016-06-12 00:14 被阅读2695次

前一阵子某某大牛的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地址

相关文章

网友评论

    本文标题:YYWebImage的尝试

    本文链接:https://www.haomeiwen.com/subject/likedttx.html