У меня есть табличное представление с 4 ячейками. В ячейках 3 и 4 у меня есть представление коллекции. Я пытаюсь настроить представление коллекции в ячейке 4 табличного представления, однако по какой-то причине любое устройство, которое я выбираю в конструкторе интерфейсов, используется при попытке установить размер ячейки.
В TableViewController у меня есть этот код:
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
let flowLayout = collectionViewLayout as! UICollectionViewFlowLayout
let totalSpace = flowLayout.sectionInset.left
+ flowLayout.sectionInset.right
+ (flowLayout.minimumLineSpacing * 3)
let size = (collectionView.frame.width - totalSpace) / 4
return CGSize(width: size, height: 166)
}
Разделите ячейки на 4 с высотой 166. Однако коллекция view.frame.width НЕ ссылается на фактическое представление коллекции , она ссылается на все Размер был в интерфейсе конструктора.
При запуске размер ячейки зависит от collectionview.frame.width, и это значение неверно.
Я проверял это как на симуляторе, так и на устройстве. Не уверены, что здесь происходит?
ОБНОВЛЕНИЕ:
Я определил причину проблемы, но не уверен, как ее устранить. Я устанавливаю ограничение высоты представления коллекции на основе размера высоты содержимого:
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let topCell = tableView.dequeueReusableCell(withIdentifier: "topCell", for: indexPath)
switch indexPath.section {
case 1:
return secondCell
case 2:
let collectionViewCell = tableView.dequeueReusableCell(withIdentifier: "matchesCell", for: indexPath) as! collectionViewCellCustomClass
let height = collectionViewCell.collectionView.collectionViewLayout.collectionViewContentSize.height
collectionViewCell.heightConstant.constant = height
self.view.setNeedsLayout()
return collectionViewCell
default:
return topCell
}
}
Это говорит о том, что высота представления коллекции должна быть любой высота его содержания. Я установил это в ячейке tableView. Однако всякий раз, когда я удаляю этот бит кода, размер ячейки работает нормально?