iOS 关于sdwebimage的的一些使用总结(不定时更新)。。

1.对于(
[cell.imageView sd_setImageWithURL:url placeholderImage:placeholder completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
        NSLog(@"----图片加载完毕---%@", image);
    }];

) 中的的completed回调到底是在imageview设置完下载的图片后执行,还是在imageview设置完下载的图片前执行呢?

让我们看下源码:

if (url) {
        __weak UIImageView *wself = self;
        id <SDWebImageOperation> operation = [SDWebImageManager.sharedManager downloadImageWithURL:url options:options progress:progressBlock completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {
            if (!wself) return;
            dispatch_main_sync_safe(^{
                if (!wself) return;
                if (image) {
                    wself.image = image;
                    [wself setNeedsLayout];
                } else {
                    if ((options & SDWebImageDelayPlaceholder)) {
                        wself.image = placeholder;
                        [wself setNeedsLayout];
                    }
                }
                if (completedBlock && finished) {
                    completedBlock(image, error, cacheType, url);
                }
            });
        }];
源码清楚显示,在“
wself.image = image;

”才去执行block,所以对于一些在多复用的cell里边设置图片并将下载完毕的图片做灰度或其他操作的时候,直接在complete回调里执行imageView的图片替换操作即可.


更多问题,加群讨论:565191947

相关文章
相关标签/搜索