heightForRowAtIndexPath Не работает должным образом

Я пытаюсь отобразить изображение с правильным соотношением сторон в моем tableView. Я предварительно рассчитал соотношение сторон изображения, и оно, похоже, работает правильно на реальном изображении, но не на ячейке, в которой оно отображается.

Код для изображения в ячейке:

private var cellImage: UIImage? {
        get { return cellImageView.image }
        set {
            cellImageView?.image = newValue
            if let newimage = newValue {
                heightConstraint.constant = newimage.size.width / CGFloat(aspectRatio)
            }
        }
    }

Код в tableView:

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
            return tableView.bounds.size.width / CGFloat(aspectRatio)
    }

aspectRatio - это переменная, которая одинакова в обоих. aspectRation = ширина / высота изображения. Также я проверил, что высота, полученная в обоих местах, одинакова, и они имеют одинаковое значение (во время выполнения).

Кто-нибудь знает, почему высота ячейки не установлена ​​правильно?

2 ответа

Решение

Вы можете использовать динамическую высоту ячейки и подогнать ячейку к изображению внутри нее. Проверьте этот учебник https://www.raywenderlich.com/87975/dynamic-table-view-cell-height-ios-8-swift

Спасибо всем, проблема исправлена. Вот решение, которое я нашел:

Я удалил вычисление ограничения высоты для cellImage и вместо этого добавил ограничение автоматической разметки представления изображения к нижнему полю ячейки. Это решило проблему.

Другие вопросы по тегам