上图中的cacheType 实际应该是一个枚举类型,而你在使用时多加了个 * ,去掉就可以了, 如下这块:completed:^ (UIImage *im, NSError *error, SDImageCacheType type) {}
解决方案 »
- 大家都用什么开发工具的?有没有iphone和android通用的工具啊
- objective c 的对象指针到底是什么
- UITabBarController使用
- 求助 iPad应用上传到App Store提示 Invalid Binary
- 伙计们,有哪些公司开发ipad网站啊?介绍下,老板要
- 求助:xcode通过soap获取远程数据库问题
- 启用了autolayout会调用几次layoutSubviews?
- UIWindow的引用计数器为什么比其他的多1 ?
- xcode7不能真机调试 提示没有libxml2.dylib
- 关于身份证扫描
- 如何实现在一个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")
}
多谢大神指点,问题终于解决了