我正在開發一個使用本地數據庫的應用程序。我得到圖像的id,然後我使用這個加載圖像在UITableView。從項目屬性設置UIImageView中的圖像
[UIImage imageNamed:imageid];
問題是,當我是填充tableview中有60個或70 entrys的實現代碼如下滾動就是非常slow.I有項目文件夾更然後90個圖像。我想知道哪些是從項目屬性更快獲取圖像的最佳方式。請幫助。
我正在開發一個使用本地數據庫的應用程序。我得到圖像的id,然後我使用這個加載圖像在UITableView。從項目屬性設置UIImageView中的圖像
[UIImage imageNamed:imageid];
問題是,當我是填充tableview中有60個或70 entrys的實現代碼如下滾動就是非常slow.I有項目文件夾更然後90個圖像。我想知道哪些是從項目屬性更快獲取圖像的最佳方式。請幫助。
首先,當你從本地設置圖像時,它應該被設置得很快。但正如你所說,它需要時間,那可能是因爲你的圖像大小。您的圖片的尺寸可能很重。您可以使用SDWebImage以同步模式加載圖像。並讓你的應用更流暢。你可以使用本地文件的URL來設置圖像
#import "UIImageView+UIActivityIndicatorForSDWebImage.h"
當你想設置圖像使用下面的代碼。
NSURL *url = [NSURL fileURLWithPath:strURL];
[cell.imgCategoryIcon setImageWithURL:url usingActivityIndicatorStyle:0];
你有一個像placeholder
圖像0等
不同的選項,試試這個:
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>)
您可以輕鬆地做到這一點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) {}];
第一次加載10張圖像,然後當你滾動,然後加載下一個10等等。這只是一個建議。 – Signare
試試這一次..http://iosdevelopertutorial.blogspot.in/2015/10/how-to-implement-lazy-loading-in-ios-sdk.html –
你用什麼代碼寫入-cellForRowAtIndexPath方法 –