Ответ 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
.