IOS SDWebImage исчезает в UITableViewCell

Я использую SDWebImage (ver3.0) в своем приложении iOS, и я хочу исчезнуть в новом изображении uitableviewcell, когда он загрузится, как Path2.0, Pinterest и Viddy. Спасибо за iOS SDWebImage исчезает в новом изображении, сам процесс затухания работает. Тем не менее, изображение в ячейке снова загружается при прокрутке таблицы. Это может быть вызвано повторным использованием ячейки.

Вот мой код.

[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

Кредит отправляется @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.