我一直在我的iOS应用程序上使用SDWebImage(ver3.0),一旦它加载像Path2.0,Pinterest和Viddy,我想淡入uitableviewcell的新图像。感谢iOS SDWebImage fade in new image ,淡入本身就是有效的。 但是,滚动tableview时,单元格中的图像会再次加载。 这可能是由于细胞的重复使用造成的。
这是我的代码。
[cell.userImageView setImageWithURL:url
placeholderImage:placeholderImage
completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType) {
if (!error) {
cell.userImageView.alpha = 0.0;
[UIView transitionWithView:cell.userImageView
duration:1.0
options:UIViewAnimationOptionTransitionCrossDissolve
animations:^{
[cell.userImageView setImage:image];
cell.userImageView.alpha = 1.0;
} completion:NULL];
}
}];
答案 0 :(得分:25)
[cell.userImageView setImageWithURL:url
placeholderImage:placeholderImage
completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType) {
if (image && cacheType == SDImageCacheTypeNone)
{
cell.userImageView.alpha = 0.0;
[UIView animateWithDuration:1.0
animations:^{
cell.userImageView.alpha = 1.0;
}];
}
}];
如果您担心单元格不再可见,您还可以使用:
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
如果行仍然可见,则此方法(不要被类似命名的UITableViewDataSource
方法混淆)将返回非nil
。这在大多数UITableViewCell
异步图像检索过程中非常重要,但事实证明setImageWithURL
将取消任何先前的图像检索过程,因此在使用SDImageWeb
时检查此问题并不重要