Высота при ошибке UICollectionViewCell при перезагрузке - PullRequest
0 голосов
/ 19 ноября 2018

Я основываю вопрос как ветвь этот вопрос

Авторазмер на ViewCells работает отлично. Но когда я перезагружаю свой CollectionView, высота возвращается 1.

Код следующий.

extension SaleViewController: CollectionViewFlowLayoutDelegate{
    override func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()
        guard let flowLayout = self.myCollectionView.collectionViewLayout as? CustomLayout else {
            return
        }
        flowLayout.invalidateLayout()
    }

    func height(at indexPath: IndexPath) -> CGFloat {
        guard let cell = self.myCollectionView.cellForItem(at: indexPath) else {
            return 1
        }
        cell.layoutIfNeeded()
        //get calculated cell height
        return cell.systemLayoutSizeFitting(UILayoutFittingCompressedSize).height
    }
}

Чего не хватает или что еще я должен пересмотреть, чтобы сохранить свой автогайт?

Заранее спасибо.

1 Ответ

0 голосов
/ 27 ноября 2018

Проверьте ваш CustomLayout, будет ли кеш, в котором хранится layoutAttribute для вашего cell.ex: приватный кеш var: [IndexPath: UICollectionViewLayoutAttributes] = [:]

, вам необходимо очистить этот кеш перед перезагрузкой

guard let flowLayout = self.myCollectionView.collectionViewLayout as? CustomLayout else {
            return
        }

flowLayout.cache.RemoveAll()
flowLayout.delegate = self
CollectionView.reloadData()
...