2016-10-10 8 views
1

앱이 배경을 입력 할 때 SDWebImage가 메모리 캐시를 지울 것입니다. 그래서 앱이 전경을 입력 할 때 tableView를 새로 고친 다음 다시로드하면 데이터가 변경되지 않았더라도 셀의 imageView가 깜박입니다.UIImageView 셀이 깜박일 때 tableView reloadData

[cell.toolsImageView sd_setImageWithURL:[NSURL URLWithString:toolsModel.iconUrl] placeholderImage:[UIImage imageNamed:@"morentu_circle"] options:SDWebImageRetryFailed]; 

모델 변경을 판단하는 것 외에도 깜박임을 피할 수있는 다른 방법이 있습니까? reloadData 주위

플리커 단계 : reloadData 전에

  1. 쇼 이미지;

  2. reloadData 및 imageView URL로 이미지 재설정;

  3. SD 메모리 캐시에서 이미지를 찾고 찾을 수 없습니다.

  4. SD 디스크 캐시에서 이미지를 찾습니다. 비동기로 설정하십시오.

  5. show로 변경 placeholderImage;

  6. 로드 디스크 이미지.

답변

0
- (void)sd_setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options progress:(SDWebImageDownloaderProgressBlock)progressBlock completed:(SDWebImageCompletionBlock)completedBlock { 
    [self sd_cancelCurrentImageLoad]; 

    NSURL *oldURL = [self sd_imageURL]; 

    objc_setAssociatedObject(self, &imageURLKey, url, OBJC_ASSOCIATION_RETAIN_NONATOMIC); 

    if (!(options & SDWebImageDelayPlaceholder) && (oldURL == nil || ![oldURL.absoluteString isEqualToString:url.absoluteString])) { 
     dispatch_main_async_safe(^{ 
      self.image = placeholder; 
     }); 
    } 
    ...... 
}