Я загружаю несколько изображений из Интернета, из нескольких разных мест, все с неизвестными и разными размерами.
Я успешно получил их ленивую загрузку красиво и появляется при загрузке в пользовательском UITableViewCell Iсоздал, который имеет UIImageView (cellImageView
ширина 320, высота 100) внутри него.
Я устанавливаю ячейку таблицы и изменяю высоту строки следующим образом:
- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath: (NSIndexPath *) indexPath
{
ImageDownloader *download = [imagesModel.downloads objectAtIndex:[indexPath row]];
if (download.image)
{
CGFloat scaleFactor = 320.0f / download.image.size.width;
CGFloat heightScaled = (scaleFactor * download.image.size.height);
return heightScaled;
}
return 100.0f;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
ImageTableCell *cell = (ImageTableCell *)[tableView dequeueReusableCellWithIdentifier:[ImageTableCell reuseIdentifier]];
if (cell == nil)
{
[[NSBundle mainBundle] loadNibNamed:@"ImageTableCell" owner:self options:nil];
cell = loadCell;
self.loadCell = nil;
}
ImageDownloader *download = [imagesModel.downloads objectAtIndex:[indexPath row]];
if (download.image == nil)
{
download.delegate = self;
}
cell.cellImageView.image = download.image;
return cell;
}
Проблема вЯ не могу заставить клетки отображаться правильно.Я поэкспериментировал с contentMode UIImageView и обнаружил, что AspectFill работает нормально, но толкает все вверх, вызывая отсечение и маскирование, и растягивает некоторые изображения, когда их не должно быть.Использование Top решает вертикальную проблему, но TableViewCell тогда не помещается в изображение (иногда изображение слишком велико.
). Решение заключается в изменении размера строки таблицы, пользовательского TableViewCell, UIImage и UIImage? А может, создать свою собственную функцию масштабирования?