簡體   English   中英

SDWebImage UITableView單元格圖像不能保持

[英]SDWebImage UITableView Cell Images Not Persisting

我正在使用SDWebImage庫來異步下載和緩存圖像和Web服務。 以下是我用來下載圖像的方法:

- (void) downloadThumbnails:(NSURL *)finalUrl
{
    SDWebImageManager *manager = [SDWebImageManager sharedManager];
    [manager downloadWithURL:finalUrl
                     options:0
                    progress:nil
                   completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished)
     {
         if (image)
         {
             [self setThumbnail:image];
         }
     }];

}

它成功從Web服務下載圖像並在tableview中顯示它們。 但是它不會在應用程序運行之間保持圖像。 為了緩存圖像,還有什么我需要做的嗎?

更新:請不要建議使用以下內容:

[cell.imageView setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"]
                   placeholderImage:[UIImage imageNamed:@"placeholder.png"]];

因為,我的程序結構不同。 其次,如果您在這里閱讀SDWebImage庫的描述,您將會知道它可以像我使用SDWebImageManager一樣使用它。

我懷疑SDWebImage中的緩存機制在這種特定情況下無法正常工作的原因是因為它基於圖像URL。

因此,如果您只是下載一個image並將其分配給某個對象的屬性(就像您將其分配給thumbnail ),如果您稍后訪問該屬性,只需簡單地遍歷緩存機制即可。

你可以做些什么來保持你的程序結構:

  1. thumbnailURL存儲在您的self對象中;

  2. 當您第一次下載圖像時,請調用SDWebImageManager downloadWithURL:方法; 這也會將圖像存儲在緩存中; (你已經根據上面的代碼做了)

  3. 使thumbnail成為一個只讀屬性,用於訪問檢索與thumbnailURL關聯的圖像的緩存。

這是您應該做的最少量的更改。

這可能是第3點描述的只讀屬性的實現:

- (UIImage*)thumbnail {

    return [[SDImageCache sharedCache] imageFromDiskCacheForKey:self.thumbnailURL];
}

其中self.thumbnailURL是對象中保存圖像URL的另一個屬性。

希望這可以幫助。

我認為你走錯了路。

如果你想使用SDWebImage進行UITableView SDWebImage以下。

1.通過以下語句導入UIImageView + WebCache.h,其中你有UITableView

#import <SDWebImage/UIImageView+WebCache.h>

2.在UITableView的cellForRowAtIndexPath方法中寫下以下行

[cell.Logo setImageWithURL: finalUrl placeholderImage:[UIImage imageNamed:@"imagename.png"] options:SDWebImageRefreshCached];

  • 在UITableViewCell中將LOGO替換為圖像視圖的名稱
  • imagename.png是項目中的圖像名稱,它將顯示直到圖像無法從Internet加載。

如果您遇到任何問題,請在此處評論

祝一切順利

我更喜歡以下方法在tableview中進行異步圖像下載。
實際上,您不需要自己處理SDWebImageManager

[cell.imageView setImageWithURL:[NSURL URLWithString:@"IMAGE_URL"]];
[cell.imageView setImageWithURL:[NSURL URLWithString:@"IMAGE_URL"] placeholderImage:[UIImage imageNamed:@"LOCAL_IMAGE_NAME"]];

確保在實現中導入了UIImageView+WebCache.h 同樣的上述異步圖像加載也可用於UIButton+WebCache.h類別和MKAnnotationView+WebCache.m類別。

新版SDWebImage還支持使用UIImage+GIF.h類別的GIF動畫
https://github.com/rs/SDWebImage

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM