[英]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
),如果您稍后訪問該屬性,只需簡單地遍歷緩存機制即可。
你可以做些什么來保持你的程序結構:
將thumbnailURL
存儲在您的self
對象中;
當您第一次下載圖像時,請調用SDWebImageManager
downloadWithURL:
方法; 這也會將圖像存儲在緩存中; (你已經根據上面的代碼做了)
使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];
如果您遇到任何問題,請在此處評論
祝一切順利
我更喜歡以下方法在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.