2012-01-31 1 views
4

Я использую SDWebImage в своем проекте iPhone, и я использую его для загрузки изображений в свою ячейку таблицы.sdwebimage: Изображение в ячейке таблицы растягивается после начальной загрузки

Оригинальное загруженное изображение 150 * 150 Мой заполнителем изображение 32 * 32 (необходимый размер)

Первый раз, когда нагрузки изображения, sdwebimage делает большую работу изменения размера загруженного изображения в соответствии размер изображения заполнителя (32 * 32). Все хорошо.

Однако, когда я перехожу назад, а затем возвращаюсь на ту же страницу, изображение растягивается и заполняет всю высоту cell.imageView. Это нормальное поведение?

Мне нужно, чтобы он всегда сохранял исходный размер 32 * 32. Можете ли вы предложить, как это сделать?

EDIT: Я нашел this link, где другой пользователь сталкивается с аналогичной проблемой (вопрос открыт). Пользователь также сделал короткий youtube video, чтобы объяснить проблему.

Мысли?

ответ

0

Попробуйте установить правильный режим содержания UIImageView

+0

Спасибо за ответ. Не могли бы вы рассказать? Я попробовал UIViewContentModeScaleAspectFit, и это не повлияло. У меня нет пользовательской ячейки таблицы. – Ravi

3

попробовать что для определенного размера в cellForRowAtIndexPath:

UIImageView *addImage = [[UIImageView alloc] init]; 
    [addImage setImageWithURL:[NSURL URLWithString:yourCellImageURL] placeholderImage:[UIImage imageNamed:@"placeholder.png"]]; 
    [addImage setFrame:CGRectMake(7, 3, 78, 57)]; 
    [cell.contentView addSubview:addImage]; 
    [cell setIndentationLevel:8]; 
0

, если вы хотите изменить размер изображения в SDWebImage. использование этот звонок.

// Here we use the new provided setImageWithURL: method to load the web image 
[cell.imageView setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"] 
      placeholderImage:[UIImage imageNamed:@"placeholder.png"] 
        completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType) { /*here you can change size of image */ }]; 
2

tldr: Если ваш пользовательский UITableViewCell подкласс имеет @propertyIBOutlet UIImageView* под названием imageView, изменить свое имя на что-то другое (например, как customImageView), и он будет работать должным образом. Прочтите остальную часть ответа за то, почему

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

Я создал a CustomTableViewCell, который расширяет UITableViewCell.

Я добавил @property (weak, nonatomic) IBOutlet UIImageView *imageView; в свою собственную ячейку. Все кажется прекрасным до сих пор, не так ли?

Кроме этого нет.

UITableViewCell уже имеет собственность imageView. Вначале iOS 7 использует ваше свойство, но затем, когда ячейка повторно используется, используется imageView, поэтому игнорирование всех ваших ограничений или ранее определенных фиксированных размеров.

iOS 8 всегда использует изображение от UITableViewCell. поэтому проблема здесь более очевидна. Предыдущие версии iOS также имели разную степень этой проблемы, обычно представляя очень похожие симптомы.

Решение?Либо имеете дело с собственностью UITableViewCell.imageView самостоятельно (добавьте код для выкладки вида), либо создайте свою собственную собственность с помощью иными словами:, с помощью которых вы можете добавить ограничения (на случай, если вы используете автоматическую компоновку) на раскадровки или xib.

+1

Боже мой, ты не можешь поверить, сколько здоровья ты дал мне с моим ответом, я мог бы либо чувствовать себя глупо или благодарно, так или иначе, если бы не ваш ответ, я бы, наверное, закончил делать что-то сложное, например, установить расположение изображения в коде или что-то в этом роде. Благодаря тонну!! –

+0

Ugh .. такой же. Это должно быть предупреждение. Грустная вещь, я думаю, что я только что сделал textLabel (тот же тип проблемы) две недели назад и поймал себя. –