iOS SDWebImage淡入UITableViewCell

时间:2012-12-25 17:52:08

标签: iphone ios uitableview fadein sdwebimage

我一直在我的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];
                              }
                          }];

1 个答案:

答案 0 :(得分:25)

感谢@OzBoz指出正确的解决方案是确认图像是否是从网络中检索的(未缓存),如果是,请执行动画:

[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时检查此问题并不重要