Изображение UIImageView + AFNetworking неправильно загружается в UITableViewCell

Я использую setImageWithURL для ленивой загрузки изображений в ячейки таблицы, но есть проблема. Он загружает изображения нормально, но, похоже, на устройстве возникает проблема с обновлением, когда изображения отображаются только при прокрутке их из представления и обратно.

В симуляторе работает отлично. Устройство работает под управлением iOS 5.1.1 на iPhone 4S.

Эта таблица отображается в контроллере UINavigation, и, поскольку изображения кэшируются, я ожидаю, что изображения появятся довольно быстро, когда я снова посмотрю на экран. Они есть, но отображаются в половину своего первоначального размера.

Изображения имеют размер 60x30.

Это проблема с загрузкой изображений на экран сетчатки, если они вдвое меньше, и что может вызвать эту проблему с обновлением?

Фрагмент кода ниже...

- (UITableViewCell *)tableView:(UITableView *)tableview cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableview dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) 
    {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];

    }

    ...
    [cell.imageView setImageWithURL:url placeholderImage:[UIImage imageNamed:@"transparent_shade"]];

    ...

    return cell;
}

Заранее спасибо за любую информацию


person d0n13    schedule 21.06.2012    source источник


Ответы (1)


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

Например, сделайте NSMutableArray внутри метода viewWillAppear вашего представления (переопределите его, если он не существует) и поместите все изображения в массив. Затем в cellForRowAtIndexPath просто получите изображения из массива и назначьте их по мере необходимости; они должны отображаться по запросу, без задержек.

Дайте нам знать, как это работает для вас.

person Javier Isaaí    schedule 12.07.2012
comment
Причина того, что изображения отображают половину своего предполагаемого размера, вероятно, связана с их соотношением сторон. Я работал с квадратными изображениями, и у меня не было проблем, то есть с файлами png 32x32. - person Javier Isaaí; 12.07.2012
comment
Так не приводит ли это к проблемам с памятью, если у вас много изображений, не поэтому ли таблицы повторно используют ячейки? Какое решение лучше? - person Fraggle; 29.11.2014