【问题标题】:CollectionView collectionViewLayout working in second reload dataCollectionView collectionViewLayout 在第二次重新加载数据中工作
【发布时间】:2018-11-19 09:07:28
【问题描述】:

我在 oneView 控制器中有六个 UICollectionView,取决于用户选择的状态,我想重新加载集合数据。我的收藏视图应该是水平滚动方向,动态大小的单元格。有我的 set collectionViewLayout 代码,此代码在所有 IPAD 和 IPHONE 中都可以正常工作,但是 IPHONE "5" IOS 10 及更高版本存在问题。当调用第一个集合视图 reloadData 时,什么都没有显示并且 collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) 不会调用。在下一个 collectionView 重新加载数据中调用此方法调用并成功更新 UI。 这个设备有什么问题?

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()

}

【问题讨论】:

    标签: ios swift uicollectionview uicollectionviewlayout


    【解决方案1】:

    我发现问题出在哪里,这是 iOS 10 中 UIKit 的一个错误。 首先在 viewDidLayoutSubviews 中调用 invalidateLayout

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

    最后在collectionView.reloadData()之后调用invalidateLayout

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-10
      • 1970-01-01
      • 2013-03-21
      • 2015-09-29
      • 1970-01-01
      • 2020-10-18
      • 2011-08-24
      • 2016-06-05
      相关资源
      最近更新 更多