2016-02-11 57 views
0

我正在開發一個使用本地數據庫的應用程序。我得到圖像的id,然後我使用這個加載圖像在UITableView從項目屬性設置UIImageView中的圖像

[UIImage imageNamed:imageid]; 

問題是,當我是填充tableview中有60個或70 entrys的實現代碼如下滾動就是非常slow.I有項目文件夾更然後90個圖像。我想知道哪些是從項目屬性更快獲取圖像的最佳方式。請幫助。

+1

第一次加載10張圖像,然後當你滾動,然後加載下一個10等等。這只是一個建議。 – Signare

+1

試試這一次..http://iosdevelopertutorial.blogspot.in/2015/10/how-to-implement-lazy-loading-in-ios-sdk.html –

+0

你用什麼代碼寫入-cellForRowAtIndexPath方法 –

回答

1

首先,當你從本地設置圖像時,它應該被設置得很快。但正如你所說,它需要時間,那可能是因爲你的圖像大小。您的圖片的尺寸可能很重。您可以使用SDWebImage以同步模式加載圖像。並讓你的應用更流暢。你可以使用本地文件的URL來設置圖像

#import "UIImageView+UIActivityIndicatorForSDWebImage.h" 

當你想設置圖像使用下面的代碼。

NSURL *url = [NSURL fileURLWithPath:strURL]; 
[cell.imgCategoryIcon setImageWithURL:url usingActivityIndicatorStyle:0]; 

你有一個像placeholder圖像0​​等

1

不同的選項,試試這個:

func getDataFromUrl(url:String, completion: ((data: NSData?) -> Void)) { 
    NSURLSession.sharedSession().dataTaskWithURL(NSURL(string: url)!) { (data, response, error) in 
     completion(data: NSData(data: data)) 
     }.resume() 
} 

func loadExternalImage(url:String,img:UIImageView){ 
    getDataFromUrl(url) { data in 
     dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), { 
      // do some task 
      dispatch_async(dispatch_get_main_queue(), { 
       img.image = UIImage(data: data!) 
      }); 
     }); 
    } 
} 

而這點你怎麼稱呼:

self.loadExternalImage(<UIImage String>, img:<UIImageView Object>) 
0

您可以輕鬆地做到這一點SDWebImage將圖像保存在緩存中。插入SDWebImage的文件,並使用這個唯一的

UIImageView *imgView= [[UIImageView alloc]init]; 
imgView.frame = CGRectMake(7, 52, 50, 50); 
imgView.image=[UIImage imageNamed:@"steert_food"]; 
[cell.contentView addSubview: imgView]; 

[imgView sd_setImageWithURL:[NSURL URLWithString:_thumbnailUrl] placeholderImage:無選項:SDWebImageProgressiveDownload完成:^(的UIImage *圖像,NSError *錯誤,SDImageCacheType cacheType,NSURL * IMAGEURL) {}];

相關問題