Я работаю над приложением iPhone, которое отображает уменьшенные изображения из контактов в UITableView.UITableView - Lazy loading contact images
Все очень быстро, пока я не включил миниатюры, тогда прокрутка будет очень медленной. Все остальные данные поддерживаются Core Data, и я попытался сохранить изображения в Core Data заранее, но это само по себе занимает слишком много времени запуска и менее гибкое и т. Д.
Что мне действительно нужно, это способ сделать поиск и предварительные миниатюры лениво с помощью отдельного потока или NSOperation и т. д., но я не уверен, каким будет самый простой способ добиться этого.
Проект образца Apple LazyTableImages, который является фантастическим, если изображения поступают из Интернета, безусловно, можно было бы адаптировать, хотя мне с ним трудно работать. В основном проблема такая же, но вместо задержки времени от загрузки и задержек сети и т. Д. Моя задержка - это просто время, необходимое для поиска изображений в адресной книге пользователя.
Это задача в моей ячейки таблицы подкласса мне нужно делать одновременно:
UIImage *contactImage = nil;
if (ABPersonHasImageData(person)) {
NSData *contactImageData = (NSData*)ABPersonCopyImageData(person);
UIImage *tempContactImage = [UIImage imageWithData:contactImageData];
[contactImageData release];
UIGraphicsBeginImageContext(CGSizeMake(45.0f, 45.0f));
[tempContactImage drawInRect:CGRectMake(0.0f, 0.0f, 45.0f, 45.0f)];
contactImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
}
Большое спасибо всем, кто имеет какие-либо полезные советы или код для достижения этой цели в простом и элегантном стиле.
Если вы рисуете в contactImage просто масштабироваться в соответствии с 45.0x45.0, вы также можете просто использовать код выше и сделать cell.imageView.contentMode = UIViewContentModeScaleAspectFill – nielsbot 2011-04-23 07:34:18