ios - CollectionView collectionViewLayout 在第二次重新加载数据时工作

标签 ios swift uicollectionview uicollectionviewlayout

我在 oneView Controller 中有六个 UICollectionView,取决于用户选择的状态,我想重新加载集合数据。我的收藏 View 应该是水平滚动方向,动态大小单元格。有我的 set collectionViewLayout 代码,此代码在所有 IPAD 和 IPHONE 中都可以正常工作,但 IPHONE“5”IOS 10 及更高版本存在问题。当调用第一个 Collection View 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 10 中 UIKit 的一个错误。 首先在viewDidLayoutSubviews中调用invalidateLayout

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

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

关于ios - CollectionView collectionViewLayout 在第二次重新加载数据时工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50775302/

相关文章:

ios - Swift 中带有 UISegmentedControl 的 VoiceOver

swift - NSWorkspace setDesktopImageURL 适合屏幕

swift - UICollectionViewCells 未填充

ios - 为什么我不能在 map View 上添加渐变?

objective-c - 如何获取 XML 节点的属性名称 - GDataXMLNode

ios - 为任何实现多个协议(protocol)的对象定义一个 Swift 类型别名

objective-c - 如何从 NSDate 检索字符串?

ios - 将 SpringyCollectionView 转换为 Swift

ios - 在 Collection View 中为 UImageView 添加标题标签

ios - 自定义 Collection View 单元格在点击时消失