Closed af8229 closed 8 years ago
From 值是0,即 YYWebImageFromNone。我猜这可能是下载过程中被取消了。
你可以打印一下 stage 这个值,看看图片加载是否是被取消了。
因为我项目重的图片框架换成YYWebImage,然后发现在一个地方会出现图片获取不到情况,从网络上获取没有问题,下次重新进入才会出现这个问题,我先尝试打印一下stage
已经打印,确实stage是0,上下滚动一下cell就没有问题了
那就说明图片设置被取消了。 检查一下,ImageView 是否被释放、yy_cancelCurrentHighlightedImageRequest 是否被调用、是否又在这过程中重新设置了一次。
cancel的方法没有被掉用过, imageView也没有被释放,,其他加载图片的地方都没有该问题出现,调用加载图片的方法是在layoutSubView里面,可能存在会多次设置的问题
如果图片设置是在 layoutSubView 里进行的,那每次调整视图大小时,都会触发一次图片设置。 建议改为 Cell 更新数据时设置一次,避免多次重复设置。
另外,如果你需要在 completion 里进行某些操作,最好先判断 (stage == YYWebImageStageFinished)。
希望大神库未来可以兼容这个问题 ,因为这块代码之前使用sdwebimage实现的,麻烦您了
这个逻辑没问题啊,判断一下 stage 就好了。
另外,如果 SDWebImage 能满足需求,那就没必要换了,清空旧的缓存、修改代码什么的也都挺繁琐的。
在一个tableView里面出现很多重复的图片素材,比如头像都是一个人发的内容,这个时候就出现某几个cell的图片没有显示的问题出现了,这种情况比较容易出现这个问题
在我测试中(https://github.com/ibireme/YYKit )没有出现过这种情况。
你可以贴一下你设置头像相关的代码,我来看看是什么问题。
在你的测试代码中,吧所有的图片链接写成一个链接也有这个问题, 就是把links里面的链接写了几个一样的,然后有时候最后一张图片或者中间的图片不出现的问题也存在,滑动一下就好了,多重启动几次问题就出现了
我又测了一下,把我的 Demo 中头像换为一个 URL,然后在模拟器和真机上测试了若干次,也重启了看一下,仍然没有复现。我检查了下代码逻辑,也没有发现问题。
所以,你能把你设置头像的代码贴上来看下吗?
这个shi是运行之后的截图 ,代码
(void)setImageURL:(NSURL *)url {
// _label.hidden = YES;
// _indicator.hidden = NO;
// [_indicator startAnimating];
// __weak typeof(self) _self = self;
//
// [CATransaction begin];
// [CATransaction setDisableActions: YES];
// self.progressLayer.hidden = YES;
// self.progressLayer.strokeEnd = 0;
// [CATransaction commit];
[_webImageView yy_setImageWithURL:url placeholder:nil options:YYWebImageOptionSetImageWithFadeAnimation progress:nil transform:nil completion:nil]; } // 这是一处
然后 NSArray links = [ NSArray links = @[ // 几个相同的地址 ]; ] ;
就是在你的webimage的测试代码中 改了2处地方,然后多run几次就出现这个这个问题,每次重新run进去偶尔出现这个问题
对了 高度也改了下
看起来是有什么问题,稍后我看一下。
感觉是这段代码有些bug,如果不为cancelled, block传出去cancel,应该传出去是finished状态吧
修复了一下上面这个问题。 抱歉我还是没能复现你上面的,只能拜托你更新代码看一下了。
就是那个cancel状态引起的问题,改成finish之后没有出现这个问题了。
Thanks!
重新滑动一下cell就好了,数据就看到了