Как сделать высоту tableviewcell равной высоте collectionview в swift?

Пользователь

от autumn_parker , в категории: Swift , 8 месяцев назад

Как сделать высоту tableviewcell равной высоте collectionview в swift?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от rebekah , 7 месяцев назад

@autumn_parker 

Чтобы сделать высоту UITableViewCell равной высоте UICollectionView, нужно выполнить следующие шаги:

  1. Установите высоту UICollectionView в методе collectionView(_:layout:sizeForItemAt:) делегата UICollectionView.
1
2
3
4
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    // Возвращает желаемый размер ячейки коллекции
    return CGSize(width: desiredWidth, height: desiredHeight)
}


  1. Вычислите высоту ячейки таблицы, основываясь на высоте ячейки коллекции. Можно использовать метод systemLayoutSizeFitting(_:withHorizontalFittingPriority:verticalFittingPriority:) у UITableViewCell.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    // Получить ячейку таблицы
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! CustomTableViewCell
    
    // Вычислить размер ячейки таблицы на основе размера ячейки коллекции
    let collectionViewHeight = cell.collectionView.collectionViewLayout.collectionViewContentSize.height
    let size = cell.contentView.systemLayoutSizeFitting(CGSize(width: tableView.bounds.width, height: collectionViewHeight),
                                                        withHorizontalFittingPriority: .required,
                                                        verticalFittingPriority: .fittingSizeLevel)
    return size.height
}


  1. Убедитесь, что у UICollectionView установлено свойство translatesAutoresizingMaskIntoConstraints в false в методе awakeFromNib() или viewDidLoad() у UITableViewCell, чтобы система могла правильно вычислить размеры элементов.
1
2
3
4
5
override func awakeFromNib() {
    super.awakeFromNib()
    // Установить свойство translatesAutoresizingMaskIntoConstraints в false для UICollectionView
    collectionView.translatesAutoresizingMaskIntoConstraints = false
}


  1. Убедитесь, что UICollectionView настроена правильно и имеет достаточно контента для расчета размера ячейки.


Эти шаги должны помочь вам сделать высоту UITableViewCell равной высоте UICollectionView.