使用SDWebImageDownloader时UITableView闪烁

问题描述:

我有一个与自定义的uitableviewcell uitableview;所述电池由 图像使用此方法使用SDWebImageDownloader时UITableView闪烁

[SDWebImageDownloader downloaderWithURL:[NSURL URLWithString:url] delegate:self]; 

我上述方法,而不是使用以下远程下载的图像和几个标签的: [cell.imageView setImageWithURL:[NSURL URLWithString:@“HTTP:/ /www.domain.com/path/to/image.jpg“] placeholderImage:[UIImage imageNamed:@”placeholder.png“]];

(ref https://github.com/rs/SDWebImage),因为我需要在下载图像后进行一些后期处理。因为SDWebImageDownloader在图像加载完成时有一个回调方法,这就是我使用它的原因。

,如果我做

[cell.imageView setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"] 
       placeholderImage:[UIImage imageNamed:@"placeholder.png"]]; 

[交processImage来]

有可能是我正在处理后的图像被完全下载之前,反正这不是问题,但只是让你知道上下文

在做了一些研究之后,saome说我应该取消加载请求......但是我不知道这是否会有所帮助,另外我不知道如何区分哪一个我应该真的加载以及哪个我应该取消

我的问题是,当使用SDWebImageDownloader时,通过uitableview滚动时,图像闪烁,以某种方式闪烁,您看到图像缓慢加载并从以前的图像更改为其他图像,最终确实会加载正确图像,但闪烁是不希望的

它似乎是什么导致的问题是调用SDWebImageDownloader而不是后期处理的图像我这样做会导致延迟或闪烁,因为在SDWebImageDownloader回调中,如果我只是简单地分配图像,闪烁仍然会发生。

我别无选择,只能使用SDWebImageDownloader,因为我需要调整图像大小...任何人都可以告诉我如何避免闪烁?谢谢

+0

1)你的意思是闪烁,还是口吃?图像是否实际“闪烁”,暂时黑色/空白?或者它是慢动作(即截图可以捕获占位符/真实图像?或者仅仅是它在滚动中结束,而每个单元格都被加载?2)您是否将可重用单元格出列? – ckhan

+0

嗨ckchan感谢您的回复。是的,我正在重复使用这些单元格。观察结果是,当滚动时,你可以看到图像从旧图像改变到新图像...这种延迟是可通知的。它只发生,如果我使用“旧图片”SDWebDownloadManager – user1118019

+0

你的意思是占位符,或者以前用于其他数据的单元格中是什么? – ckhan

自从更新AFNetworking库以来,我注意到有时会从AFNetworking中调用setImageWithURL:而不是从SDWebImage中调用。

我用downloadWithURL:options:progress:completed:SDWebImageManager解决它。

我有一个UITableView(与自定义单元格),我使用来自Foursquare API的数据填充。 setImageWithURL:方法导致闪烁。在模拟器(LAN)和iPhone5(WiFi)上,它看起来像闪烁。但是在设备上切换到2G时,我注意到,在正确的图像设置之前,来自不同单元的图像正在加载到imageView中。

我从setImageWithURL:切换到downloadWithURL:options:progress:completed:,先设置占位符图像,然后在downloadWithURL:options:progress:completed:方法的完成块中设置图像。它变得更加平滑,并解决了所有闪烁。