Как загрузить локальные изображения в UITableView, не влияя на производительность прокрутки вниз?
Прежде чем кто-то скажет, что эта тема дублируется несколько раз, обратите внимание, что мне действительно не нужно загружать удаленные изображения из Интернета (решение SDWebImage github), я пытаюсь загрузить изображения, динамически сохраненные в папке документов, поэтому они локально к тому времени, когда я хочу загрузить их в свой tableView, имея ссылку на них через запись в таблице sqlite, в которой я сохранил имя изображения, как оно было сгенерировано кодом.
Поэтому после анализа всех моих данных sqlite в моем методе CellForRowAtIndexPath в определенный момент у меня есть следующие строки кода:
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
...
NSString *imageName = [[favorites objectAtIndex:[indexPath row]] objectForKey:@"imagename"];
cell.image.image = [self loadImage: imageName]; // Is a custom cell so cell.image is a UIImageView, and I'm setting its image property
...
}
И мой метод loadImage выглядит так:
- (UIImage*)loadImage:(NSString*)imageName {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.png", imageName]];
return [UIImage imageWithContentsOfFile:fullPath];
}
Также обратите внимание, что этот код на самом деле работает, но прокрутка вниз таблицы выглядит запоздалой. Как я могу улучшить производительность, я имею в виду, загрузка изображений в фоновом режиме приходит мне в голову, но изображения уже есть. Может кто-нибудь дать мне конкретное решение по этому вопросу, пожалуйста?
Просто чтобы вы знали, я работаю с iOS 5 и ARC.
Любая помощь будет принята с благодарностью.
1 ответ
Сначала уменьшите размер загружаемого вами изображения.
Во-вторых, попробуйте использовать GCD для загрузки изображения в tableView:cellForRowAtIndexPath:.