У меня есть ячейка tableView, которая содержит collectionView. В collectionView должно отображаться облако тегов (простая метка с фоном и рамкой). Количество тегов может варьироваться, что означает, что высота collectionView может варьироваться. Я пытаюсь визуализировать высоту ячейки tableView на основе intrinsicContentSize.height из collectionView.
Пока все хорошо. Однако я получаю разные высоты от collectionView в разное время. К сожалению, последняя высота, которую я получаю, неверна (слишком высока), и поэтому ячейка tableView оказывается слишком высокой.
Я создал пример проекта, который доступен здесь . Ниже показано, как выглядит пример проекта.
![enter image description here](https://i.stack.imgur.com/u4EaO.png)
Здесь я вычисляю высоту ячейки tableView, которая всегда возвращает неверное значение высоты:
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return data[indexPath.row].returnHeight()
}
struct MyData {
var title = String()
var tokenStrings = [String]()
var collectionViewHeight = CGFloat()
func returnHeight() -> CGFloat {
var height = CGFloat()
let topBottomMargin: CGFloat = 24
let titleHeight: CGFloat = 18
let tagsMargin: CGFloat = 16
let cell = TableViewCell()
cell.configure(with: self)
height += cell.collectionView.intrinsicContentSize.height
height += topBottomMargin
height += titleHeight
height += tagsMargin
return height
}
}
Здесь я настраиваю ячейку collectionView, которая в какой-то момент жизненного цикла (я не уверен, почему) возвращает правильное значение, но затем, наконец, возвращает слишком высокое значение:
func configure(with data: MyData) {
self.data = data
self.collectionView.reloadData()
self.collectionView.layoutIfNeeded()
}
Я бы оценил любые намеки на то, почему в конце collectionView считает, что ему нужно больше высоты для его contentSize. Я также открыт для других решений, чтобы правильно отображать высоту ячейки. Очень ценится!