Невозможно установить размер ячейки в представлении коллекции внутри представления таблицы - PullRequest
0 голосов
/ 05 апреля 2020

У меня есть табличное представление с 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
    }
}

enter image description here

Это говорит о том, что высота представления коллекции должна быть любой высота его содержания. Я установил это в ячейке tableView. Однако всякий раз, когда я удаляю этот бит кода, размер ячейки работает нормально?

1 Ответ

0 голосов
/ 07 апреля 2020

Проблема была решена. Действительно просто:

Если я установил: collectionView.reloadData (), это исправит это!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...