UIImageView в моем UITableViewCell изменяет размер при щелчке

В моем приложении есть довольно простой UITableView, используемый для отображения изображения и текста стандартным / стандартным способом. При первом запросе UITableViewCell я возвращаю его с изображением-заполнителем и начинаю асинхронную загрузку реального изображения. По завершении загрузки я заменяю изображение-заполнитель.

Если загрузка не удалась, изображение-заполнитель остается. Щелчок по такой строке действует нормально. Если загрузка прошла успешно, нажатие на строку с предполагаемым изображением приводит к расширению UIImageView до высоты строки (а ширина увеличивается в масштабе). UIImageView никогда не возвращается к нормальному размеру. Грубые попытки установить рамку UIImageView не решают проблему загадочного изменения размера.

// from my - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath; method
// after boilerplate cell dequeuing code
cell.textLabel.text = [selectedNoun title];

// add placeholder image
UIImage *placeholderImage = [UIImage imageNamed:@"placeholder.png"];
cell.imageView.image = placeholderImage;
[cell.imageView setContentMode:UIViewContentModeScaleAspectFit];
//...
// If the image has been downloaded I set it
cell.imageView.image = iconDownloader.image;

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

Спасибо!

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

23
задан Jon Whitmore 21 December 2011 в 20:36
поделиться

3 ответа

выполните следующие действия:

  1. Выберите ImageView в пользовательской ячейке
  2. и перейдите к Показать инспектору идентификации
  3. Прокрутите все до конца и снимите флажок «Взаимодействие с пользователем включено».
1
ответ дан 29 November 2019 в 01:51
поделиться

Я исправляю проблему с:

cell.selectionStyle = .none
0
ответ дан 29 November 2019 в 01:51
поделиться

делает что-то вроде

CGRect bounds = [self bounds];
[self setImage:image];
[self setBounds:bounds];

, когда настройка изображения решает проблему для меня

0
ответ дан 29 November 2019 в 01:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: