У меня есть довольно ванильный 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;
Это сводит меня с ума. Фактически это происходит только в одной из двух таблиц в моем приложении, но после сравнения строк или строк я не вижу никакой разницы. Надеясь, что кто-то уже сталкивался с этим раньше.
Спасибо!
EDIT: у меня нет хорошего объяснения для моего решения, кроме как сказать, что изображения с определенным размером, похоже, приводят к такому поведению и использованию фактических эскизов (даже изображений, несколько больших, чем UIImageView), не проявляют это поведение.