Есть похожие вопросы, но ответы не работали для меня. В динамической таблице я хочу отображать изображения с разным уровнем. Каждая ячейка имеет UIImageView
с contentMode = .scaleAspectFit
, поэтому изображение красиво берет ширину стола и принимает высоту столько, сколько необходимо.Динамический UITableView с изображениями
Таблица контроллер представления:
class TableTableViewController: UITableViewController {
override func viewDidLoad() {
super.viewDidLoad()
tableView.estimatedRowHeight = 100
tableView.rowHeight = UITableViewAutomaticDimension
}
override func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 2
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: ImageTableViewCell.self), for: indexPath) as! ImageTableViewCell
let image = indexPath.row == 0 ? UIImage(named: "1.jpg")! : UIImage(named: "2.jpg")!
cell.customImageView.image = image
return cell
}
}
Результат:
Как вы можете видеть, что высота ячейки неверен (красный фон изображения в верхней и нижней части изображения). Я считаю, что это происходит потому, что intrinsicContentSize
изображения равно размеру изображения, и поэтому высота ячейки вычисляется неправильно (режим контента не учитывается). Я попытался расчет высоты изображения и добавляя ограничение высоты для представления изображения:
cell.heightConstraint.constant = cell.frame.width * image.size.height/image.size.width
, но она нарушает его содержимые ограничения ячейки.
Проект можно скачать here>>
Так в основном вы хотите TableView, которые имеют динамическую ячейку высоты? –
Правильно установить ограничения – Harish
@Dharmesh Kheni да, поэтому высота ячейки равна высоте изображения. – sash