@sash проверьте обновленный код.

похожие вопросы, но ни один из ответов не работал для меня. В динамической таблице я хочу отображать изображения, которые имеют разную высоту. Каждая ячейка имеетUIImageView сcontentMode = .scaleAspectFit таким образом, изображение хорошо принимает ширину стола и принимает высоту столько, сколько необходимо.

Ячейка имеет 4 ограничения:

Контроллер табличного представления:

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

но это нарушает ограничения представления содержимого ячейки.

Проект можно скачатьздесь >>

Ответы на вопрос(1)

Ваш ответ на вопрос