使用SDWebImageDownloader时UITableView闪烁

时间:2012-06-11 03:12:43

标签: ios uitableview sdwebimage

我有自定义uitableviewcell的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"]];

[post processImage]

我可能会在完全下载之前对图像进行后期处理,无论如何这不是问题,只是让你知道背景

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

我的问题是,当使用SDWebImageDownloader时,当滚动浏览uitableview时,图像闪烁,闪烁的方式,你看到图像慢慢加载并从之前的图像更改为另一个,最后它确实加载了正确的图像,但不希望闪烁

似乎导致问题的是调用SDWebImageDownloader而不是对我正在做的图像的后处理导致延迟或闪烁,因为在SDWebImageDownloader回调中,如果我只是分配图像,仍然闪烁发生。

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

1 个答案:

答案 0 :(得分:0)

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

我使用downloadWithURL:options:progress:completed:中的SDWebImageManager解决了这个问题。

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

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