Быстрое исправление - использование режима контента UIViewContentModeScaleAspectFill
.Изображения будут растягиваться в одном или обоих измерениях, чтобы заполнить границы всего изображения.
Вам действительно нужно иметь подклассы UITableViewCell
, чтобы сделать это правильно.
Это ленивое решение с добавлением нового UIImageView
и использованием проставки, как сказал вам Келлер в своем ответе (не стесняйтесь принять его ответ, это просто отсутствующий код).
Извлечение tableView:cellForRowAtIndexPath:
:
...
cell.textLabel.text = [NSString stringWithFormat:@"Cell #%i", indexPath.row];
cell.imageView.image = [UIImage imageNamed:@"spacer.png"]; /* spacer is 64 x 44 */
/* image view width should be ~ 64 px, otherwise it will overlap the text */
UIImageView *iv = [[UIImageView alloc] initWithFrame:(CGRect){.size={64, tableView.rowHeight}}];
switch (indexPath.row) {
case 0:
iv.image = [UIImage imageNamed:@"waterfall.png"];
break;
/* etc... */
}
if (indexPath.row < 3) {
/* add black bg to cell w/ images */
iv.backgroundColor = [UIColor blackColor];
}
iv.contentMode = UIViewContentModeScaleAspectFit;
[cell.contentView addSubview:iv];
...
Таблица будет выглядеть следующим образом:
Вам необходимо установить заполнитель (spacer.png
выше)в существующем представлении изображения ячейки.Это будет толкать текстовую метку вправо.
Вы можете использовать аспект заливки и удалить бит цвета фона:
iv.contentMode = UIViewContentModeScaleAspectFill;
Таблица будет выглядеть неправильно, потому что изображение нарисовано вне границ:
Просто обрезайте границы, чтобы получить лучший результат:
iv.clipsToBounds = YES;