Существует прямое решение для вашей проблемы, если вы не хотите менять макет.
1 - определите вашу ячейку
2 - поместите UIImageView
и другие элементы пользовательского интерфейсавам нравится внутри вашей ячейки и добавить эти ограничения для изображения: -top, ведущий, трейлинг, снизу до суперпредставления -height ограничения и добавить выход к вашему коду (например: heightConstraint)
![enter image description here](https://i.stack.imgur.com/6y71Q.png)
3-Измените наполнение контента на: аспектное соответствие
4 - Загрузите ваши изображения через зимородок или любым другим способом, который вам нравится, после того, как вы передадите свое изображение, проверьте размер ивычислите соотношение: imageAspectRatio = высота / ширина
5-Установите высотуConstraint.constant = screenWidth * imageAspectRatio
6-вызовите layoutIfNeeded () для ячейки, и вы должны быть в порядке!
* Это решение работает с любой композицией макета пользовательского интерфейса, включая представления стека, поскольку точка имеет ограничение на изображения и позволяет представлению таблицы выяснить, как рассчитать и нарисовать ограничениеs.
class CustomTableViewCell: UITableViewCell {
@IBOutlet weak var heightConstraint: NSLayoutConstraint!
@IBOutlet weak var sampleImageView: UIImageView!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
func configure(image:UIImage) {
let hRatio = image.size.height / image.size.width
let newImageHeight = hRatio * UIScreen.main.bounds.width
heightConstraint.constant = newImageHeight
sampleImageView.image = image
sampleImageView.layoutIfNeeded()
}
}
Результат: ![enter image description here](https://i.stack.imgur.com/Ux9gA.png)