Способ, которым вы можете автоматически рассчитать размер ячейки, состоит в том, чтобы установить ограничения внутри вида ячейки для всех направлений по вертикальной оси. Итак, в вашем случае представление изображения будет иметь верхний, ведущий и конечный значения для супервизора, а снизу - для метки. Метка будет иметь ведущую и нижнюю часть для просмотра, а верхняя часть будет соответствовать установленному вами виду изображения. Важно установить вертикальную ось, так как в табличном виде она нужна нам для расчета высоты. Таким образом, табличное представление будет знать, чего ожидать, и сможет автоматически установить высоту.
После этого вы установите tableView.rowHeight = UITableView.automaticDimension
. Или вы также можете установить в методе делегата.
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return UITableView.automaticDimension
}
После того, как все это будет на месте, вам нужно будет только указать правильные значения для подвидов ячеек (в этом случае установите изображение и текст). Вы можете сделать это внутри ячейки для функции строки. Пример кода будет выглядеть примерно так.
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "identifier", for: indexPath)
let model = self.models[indexPath.row]
cell.imageViewPostPreview.image = model.image ?? nil
cell.postText.text = model.text ?? nil
return cell
}
Это должно работать без дальнейшей необходимости вычислять ограничения и вызывать макеты для обновления. Надеюсь это поможет! Вы также можете проверить это вопрос .