sdwebimage: изображение в ячейке таблицы растягивается после начальной загрузки - PullRequest
4 голосов
/ 01 февраля 2012

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

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

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

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

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

РЕДАКТИРОВАТЬ : Я нашел эту ссылку , где другой пользователь сталкивается с аналогичной проблемой (открытый вопрос). Пользователь также сделал короткое видео на YouTube , чтобы объяснить проблему.

Мысли

Ответы [ 4 ]

3 голосов
/ 14 октября 2014

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

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

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

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

За исключением случаев, когда это не так.

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

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

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

3 голосов
/ 07 марта 2012

попробуйте это для определенного размера в 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 голосов
/ 27 августа 2013

, если вы хотите изменить размер изображения в 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 */ }];
0 голосов
/ 01 февраля 2012

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

...