Загрузка изображений с URL-адреса в UIImageView UITableViewCell - PullRequest
4 голосов
/ 05 декабря 2011

У меня есть следующий код: (Примечание: newsImageURL - это NSArray)

NSString *imagesURL = @"http://aud.edu/images/newsimage01.png,http://aud.edu/images/newsimage04.png,http://aud.edu/images/newsimage02.png,http://aud.edu/images/newsimage03.png,http://aud.edu/images/newsimage01.png,http://aud.edu/images/newsimage04.png,http://aud.edu/images/newsimage01.png,http://aud.edu/images/newsimage04.png,http://aud.edu/images/newsimage01.png,http://aud.edu/images/newsimage04.png,";
newsImageURL = [[NSArray alloc] initWithArray:[AllNewsHeadLine componentsSeparatedByString:@","]];

Я пытаюсь загрузить эти изображения в ячейку, используя код ниже:

NSData* imageData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString: [newsImageURL objectAtIndex:indexPath.row]]]; 
cell.image = [UIImage imageWithData:imageData];

Изображение отлично загружается, когда я использую эту строку вместо:

cell.image = [UIImage imageNamed:@"imagename.png"];

Что я делаю не так?

Ответы [ 4 ]

9 голосов
/ 06 декабря 2011

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

https://github.com/rs/SDWebImage - это хорошая и простая структура

#import "UIImageView+WebCache.h"

...

- (UITableViewCell *)tableView:(UITableView *)tableView
         cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *MyIdentifier = @"MyIdentifier";

    UITableViewCell *cell =
        [tableView dequeueReusableCellWithIdentifier:MyIdentifier];

    if (cell == nil)
    {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
                                       reuseIdentifier:MyIdentifier] autorelease];
    }

    // Here we use the new provided setImageWithURL: method to load the web image
    [cell.imageView setImageWithURL:[NSURL URLWithString:@"http://aud.edu/images/newsimage01.png,http://aud.edu/images/newsimage04.png"]
                   placeholderImage:[UIImage imageNamed:@"placeholder.png"]];

    cell.textLabel.text = @"My Text";
    return cell;
}
4 голосов
/ 05 декабря 2011

Вы можете загрузить данные следующим образом:

NSData *data = [NSData dataWithContentsOfURL: [NSURL URLWithString: [newsImageURL objectAtIndex:indexPath.row]]];

И вы также можете создать экземпляр массива URL:

NSArray *newsImageURL = [imagesURL componentsSeparatedByString:@","];

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

2 голосов
/ 03 мая 2013

Может быть, вы можете попробовать https://github.com/SpringOx/ALImageView.git.It намного проще, чем SDWebImage. Вам нужны только два исходных файла (ALImageView.h / ALImageView.m). Вы можете повторно использовать представление изображения, чтобы перезагрузить различные URL в представлении таблицы.клетка.

  1. Поддержка локального и кэш-памяти;
  2. Поддержка заполнителей;
  3. Поддержка касания касанием (target-action);
  4. Поддержка угла дляпросмотр изображения;
1 голос
/ 28 сентября 2013

Вы можете легко загрузить все изображения с помощью следующего кода. Массив Details является основным массивом

Details Array :-  {
        "item_code" = 709;
        "item_desc" = Qweqweqwe;
        "item_name" = AQA;
        "item_photo" = "http://toshaya.com/webapp/snap&sell/api/img_items/709.png";
        "item_price" = "0.00";
        "item_till" = "20-25";
        "item_type" = Orange;
        latitude = "";
        longitude = "";
    }

С помощью следующего кода получите URL-адрес фотографии в строку

 NSString * result = [[DetailArray objectAtIndex:indexPath.row]objectForKey:@"item_photo"]; //componentsJoinedByString:@""];

 NSLog(@"%@",result);

NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:result]];
cell.icon.image = [UIImage imageWithData:imageData];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...