请教使用过SDWebImage的大神关于图片下载后回调方法的问题 上图中的cacheType 实际应该是一个枚举类型,而你在使用时多加了个 * ,去掉就可以了, 如下这块:completed:^ (UIImage *im, NSError *error, SDImageCacheType type) {} 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 找到问题了,SDWebImageCachType定义时不需要*符号 PS:另一个问题,因为是异步加载,所以通过上面的方法来把图片通过数组muarr传值,会导致下一个页面显示的图片与列表里显示的小图不相符,也就是顺序乱了。所以想到不通过回调,而是直接使用缓存来读取图片我想知道SDWebImage的默认缓存路径在哪里,还有如果不使用disk缓存,直接使用内存缓存的话,该怎么用呢? 如果数组在得到时是有序的,那么在显示数组中的图片时应该不会出现你说的列表顺序乱了。使用类似的第三方图片加载的库,一般都会提供一个占位的image, 也就是上面的函数中的placeholderImage. 在远程图片未被下载完显示之前,你先看到的会是这个占位的image, 当图片下载完成后会更新UI线程上更新这个image。 如果数组在得到时是有序的,那么在显示数组中的图片时应该不会出现你说的列表顺序乱了。使用类似的第三方图片加载的库,一般都会提供一个占位的image, 也就是上面的函数中的placeholderImage. 在远程图片未被下载完显示之前,你先看到的会是这个占位的image, 当图片下载完成后会更新UI线程上更新这个image。 是的,有提供占位的Image,我想实现的效果是每个cell上排列三张图片,点击任一图片后,能通过scrollview来查看放大的图片。所以我想把图片放入数组中,这样就能直接读取了,但是因为异步的原因,会导致顺序出错,显示的图片和点击的图片不符。 如果数组在得到时是有序的,那么在显示数组中的图片时应该不会出现你说的列表顺序乱了。使用类似的第三方图片加载的库,一般都会提供一个占位的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")} 如果数组在得到时是有序的,那么在显示数组中的图片时应该不会出现你说的列表顺序乱了。使用类似的第三方图片加载的库,一般都会提供一个占位的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")}多谢大神指点,问题终于解决了 现在制作ui界面还用xib吗? XCode4.3.2安装后找不到Interface builder,请问XCode4.3.2如使用Interface builder? 外企IOS笔试题目! UISearchBar的白色区域如何去除 Label文本换行问题 3ds模型不能正常贴图 ios 上线审核 内支付 问题 UIView transform 缩放,后移动 请大神帮个忙:怎么在xcode下用swift编写按钮转换的代码 iOS TabView的显示问题 如何实现在一个viewcontroller上加载另一个viewcontroller IOS 图片抖动中心点
我想知道SDWebImage的默认缓存路径在哪里,还有如果不使用disk缓存,直接使用内存缓存的话,该怎么用呢?
如果数组在得到时是有序的,那么在显示数组中的图片时应该不会出现你说的列表顺序乱了。使用类似的第三方图片加载的库,一般都会提供一个占位的image, 也就是上面的函数中的placeholderImage. 在远程图片未被下载完显示之前,你先看到的会是这个占位的image, 当图片下载完成后会更新UI线程上更新这个image。
是的,有提供占位的Image,我想实现的效果是每个cell上排列三张图片,点击任一图片后,能通过scrollview来查看放大的图片。所以我想把图片放入数组中,这样就能直接读取了,但是因为异步的原因,会导致顺序出错,显示的图片和点击的图片不符。
是的,有提供占位的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")
}
是的,有提供占位的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")
}
多谢大神指点,问题终于解决了