讨教使用过SDWebImage的关于图片下载后回调方法的问题

iOS 码拜 9年前 (2016-03-29) 1672次浏览
近日使用SDWebImage来加载并缓存图片,本人希望能在图片异步加载完成的时候用一个变量取到图片数据。但是在新版本的方法中是使用Block来进行回调的,讨教高手,这个Block方法该怎么写。- (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options progress:(SDWebImageDownloaderProgressBlock)progressBlock completed:(SDWebImageCompletedBlock)completedBlock本人用的是这个方法,但是在写completedBlock的时候总是会报错,不知道错在哪里.
这是本人写的代码
讨教使用过SDWebImage的关于图片下载后回调方法的问题
这是报的错
讨教使用过SDWebImage的关于图片下载后回调方法的问题
另外请教这几个方法有什么区别啊
讨教使用过SDWebImage的关于图片下载后回调方法的问题
解决方案

20

讨教使用过SDWebImage的关于图片下载后回调方法的问题
上图中的cacheType 实际应该是一个枚举类型,而你在使用时多加了个 * ,去掉就可以了, 如下这块:
completed:^ (UIImage *im, NSError *error, SDImageCacheType type) {}

5

引用:

PS:另一个问题,原因是是异步加载,所以通过上面的方法来把图片通过数组muarr传值,会导致下一个页面显示的图片与列表里显示的小图不相符,也就是顺序乱了。所以想到不通过回调,而是直接使用缓存来读取图片
本人想知道SDWebImage的默认缓存路径在哪里,还有假如不使用disk缓存,直接使用内存缓存的话,该怎么用呢?

假如数组在得到时是有序的,那么在显示数组中的图片时应该不会出现你说的列表顺序乱了。使用相似的第三方图片加载的库,一般都会提供一个占位的image, 也就是上面的函数中的placeholderImage. 在远程图片未被下载完显示之前,你先看到的会是这个占位的image, 当图片下载完成后会更新UI线程上更新这个image。

15

引用:
Quote: 引用:
Quote: 引用:

假如数组在得到时是有序的,那么在显示数组中的图片时应该不会出现你说的列表顺序乱了。使用相似的第三方图片加载的库,一般都会提供一个占位的image, 也就是上面的函数中的placeholderImage. 在远程图片未被下载完显示之前,你先看到的会是这个占位的image, 当图片下载完成后会更新UI线程上更新这个image。

是的,有提供占位的Image,本人想实现的效果是每个cell上排列三张图片,点击任一图片后,能通过scrollview来查看放大的图片。所以本人想把图片放入数组中,这样就能直接读取了,但是原因是异步的原因,会导致顺序出错,显示的图片和点击的图片不符。

你是将cell中的三张图片放到一个数组中吗? 显示的图片和点击的图片不符是原因是取的不对吧。假如能找到点击图片的下标索引去数组中去读取图片对象,应该是相对应的。你可以创建一个缓存对象NSArray 来保存已经加载出的图片
///////创建缓存NSMutalbeArray

NSMutalbeArray *cacheImage = [NSMutableArray alloc] init];
int count= yourImagescount; ///////
for (int i=0; i<count; i++) {
         [cacheImage addObject:[NSNull null]];
}

上面是根据图片数组的大小创建的缓存对象,下面就是当异步加载出来图片后来替换相应的缓存对象

if (image!=nil) {
       [cacheImage replaceObjectAtIndex:XXX withObject:image];
}

这样在显示大图时就可以从这个cacheImage中来取图片对象了

UIImage *image= cacheImage[XXX];  ////XXX是当前点击的图片索引
if (image==[NSNull null]) {   //////////说明还没有被异步加载完毕
      NSLog(@"image is loading");
}else {
      NSLog(@"show image")
}

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明讨教使用过SDWebImage的关于图片下载后回调方法的问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)