CollectionView collectionViewLayout работает во второй перезагрузке данных - PullRequest
0 голосов
/ 09 июня 2018

У меня есть шесть UICollectionView в контроллере oneView, в зависимости от выбранного пользователем состояния, я хочу перезагрузить данные коллекций.моя коллекция просмотров должна быть горизонтальной Scroll Direction, динамический размер ячейки.Вот мой код для набора collectionViewLayout, этот код отлично работает во всех IPAD и IPHONE, но есть проблема с IPHONE "5" IOS 10 и более поздними версиями.при вызове первого представления коллекции reloadData ничего не показывается, а collectionView (_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) не вызывает.в следующем вызове данных перезагрузки collectionView вызов этого метода и пользовательский интерфейс обновляются успешно.в чем проблема в этих устройствах?

private func setFlowLayout() {

  let flowLayout = UICollectionViewFlowLayout()
    flowLayout.scrollDirection = UICollectionViewScrollDirection.horizontal
    flowLayout.minimumInteritemSpacing = 10.0
    flowLayout.sectionInset = UIEdgeInsets(top: 0.0, left: 5.0, bottom: 0.0, right: 5.0)
    flowLayout.estimatedItemSize = CGSize(width: 1,height: 1)
    flowLayout.estimatedItemSize = CGSize(width: 1,height: 1)
    collectionView.collectionViewLayout = flowLayout
    collectionView.collectionViewLayout.invalidateLayout()

}

1 Ответ

0 голосов
/ 11 июня 2018

Я выяснил, в чем проблема, это ошибка UIKit в iOS 10. первый вызов invalidateLayout в viewDidLayoutSubviews

override func viewDidLayoutSubviews() {
    super.viewWillLayoutSubviews()
    collectionView.collectionViewLayout.invalidateLayout()
}

И, наконец, вызов invalidateLayout после collectionView.reloadData ()

...