Размер ячейки коллекции изменяется в соответствии с загруженным изображением - PullRequest
0 голосов
/ 18 апреля 2020
    let sectionInsets = UIEdgeInsets(top: 50.0,left: 20.0,bottom: 50.0,right: 20.0)


    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    let paddingSpace = sectionInsets.left * (itemsPerRow + 0.5)
    let availableWidth = view.frame.width - paddingSpace
    let widthPerItem = availableWidth / itemsPerRow

    let size = CGSize(width: widthPerItem, height: widthPerItem)
    return size
    }

Это мой код. Может кто-нибудь сказать мне, почему размер ячейки меняется в зависимости от загруженного изображения, а также его решения?

У меня также возникает проблема в моем отладчике - «Создайте символьную c точку останова на UICollectionViewFlowLayoutBreakForInvalidSizes, чтобы перехватить это в отладчике».

1 Ответ

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

Установите Оценочный размер на Нет в Интерфейсном Разработчике и переопределите функцию "willTransition (to newCollection: with Координатор :)", как показано ниже: -

    public override func willTransition(to newCollection: UITraitCollection, with coordinator: UIViewControllerTransitionCoordinator) {
    let paddingSpace = sectionInsets.left * (itemsPerRow + 0.5)
    let availableWidth = view.frame.width - paddingSpace
    let widthPerItem = availableWidth / itemsPerRow

    let size = CGSize(width: widthPerItem, height: widthPerItem)

    super.viewWillTransition(to: size, with: coordinator)

    coordinator.animate(alongsideTransition: { (context) in
        self.imageCollectionView.collectionViewLayout.invalidateLayout()
    }) { (context) in

    }
}
...