2016-02-11 4 views
0

Я разрабатываю одно приложение, использующее локальную базу данных. Я получаю идентификатор изображения, а затем загружаю изображения в UITableView, используя это.Установить изображения в UIImageView из свойств проекта

[UIImage imageNamed:imageid]; 

Проблема заключается в том, что, когда я заселить TableView с 60 или 70 entrys TableView скроллинг очень slow.I имеют более 90 изображений в папке проекта. Я хочу знать, что лучший способ для получения изображений быстрее из свойств проекта. Пожалуйста, помогите.

+1

сначала загрузите 10 изображений, затем, когда вы прокрутите, затем загрузите следующие 10 и так далее. Это всего лишь предложение. – Signare

+1

Попробуйте это на один раз ..http: //iosdevelopertutorial.blogspot.in/2015/10/how-to-implement-lazy-loading-in-ios-sdk.html –

+0

какой код u напишите в методе -cellForRowAtIndexPath –

ответ

1

Прежде всего, когда вы устанавливаете изображение из локального, его следует установить очень быстро. Но, как вы сказали, это займет время, это может быть из-за вашего размера изображения. Ваше изображение может быть очень тяжелым по размеру. Вы можете использовать SDWebImage, чтобы загрузить изображение в синхронизированном режиме. и сделать приложение более плавным. вы можете использовать локальный URL-адрес файла для установки изображения

#import "UIImageView+UIActivityIndicatorForSDWebImage.h" 

Если вы хотите установить изображение, используйте приведенный ниже код.

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

у вас есть другой вариант, как placeholder изображение activityIndicator и т.д.

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) {}];

Смежные вопросы