2016-01-05 48 views
-2

無論如何處理或顯示UIImage與緩存和佔位符?如何在uiimage緩存中使用sdimage?

我發現從堆棧交換一個答案,但它因此未下面的鏈接,給我的工作:

Best way to cache images on ios app?

注:我沒有任何URL,因爲我得到PHIMAGE資產庫的圖像對象。

+0

沒有必要緩存,當您使用圖像資源庫。這些圖像在構建時會複製到您的包中,因此它們始終存在。 – Jasper

+0

你的映像在本地捆綁包或服務器上? – rptwsthi

+0

你在使用[PHImageManager](http://nshipster.com/phimagemanager/)嗎? – Jasper

回答

0

您可以使用SDWebImage
顯示和緩存圖像非常簡單。

[imageView sd_setImageWithURL:[NSURL URLWithString:@"http://www.image_url.com"] 
        placeholderImage:[UIImage imageNamed:@"placeholder.png"]]; 
+0

但我沒有任何URL我有一個phimage對象的圖像,所以我不能得到任何URL – SmarterSusheel

0

您可以使用一個名爲SDWebImage

SDWebImage非常有用的庫自動將緩存所有的圖像,當您提供與sd_setImageWithURL有效的URL。所以下次你打電話時,會使用緩存系統而不是重新下載鏡像。

例在從github上一個UIImageView實現:

// Here we use the new provided sd_setImageWithURL: method to load the web image 
[cell.imageView sd_setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"] 
        placeholderImage:[UIImage imageNamed:@"placeholder.png"]]; 
+0

但我沒有任何URL我有一個phimage對象的圖像,所以我不能得到任何URL – SmarterSusheel

0

有平滑的所有圖像的問題,同時滾動的表,但是有重裝電池沒有緩存的問題,我解決了這個的問題問題。

我從PHAsset框架提供的本地標識符中逐個獲取圖像,並將該圖像顯示到單元格中。

對於參考代碼:

PHFetchResult * savedAssets = [PHAsset fetchAssetsWithLocalIdentifiers:@ [本地標識符]選項:無]; [savedAssets enumerateObjectsUsingBlock:^(PHAsset *資產,NSUInteger IDX,BOOL *停止){

 //this gets called for every asset from its localIdentifier you saved 
     PHImageRequestOptions * imageRequestOptions = [[PHImageRequestOptions alloc] init]; 
     imageRequestOptions.synchronous = YES; 
     imageRequestOptions.deliveryMode = PHImageRequestOptionsResizeModeFast; 

     [[PHImageManager defaultManager]requestImageForAsset:asset targetSize:CGSizeMake(50,50) contentMode:PHImageContentModeAspectFill options:imageRequestOptions resultHandler:^(UIImage * _Nullable result, NSDictionary * _Nullable info) { 
      NSLog(@"You get an image from result"); 

     }]; 
    }];