是否有什么好方法可以在collectionView中设置动态大小的单元格,在其中可以切换显示/隐藏集合视图?
我通常可以通过FlowLayout.estimatedItemSize = ____和在单元格中设置约束来使事情正常进行,但是我的布局在第一次渲染后总是被弄乱。
我基本上在这里有两个单独的集合视图。根据最上面的一个,最下面的一个切换为isHidden。第一个渲染总是可以的,但是从第二个渲染开始,它看起来就像其他照片一样。我已经读到这可能是一个缓存问题……有什么想法吗?这似乎是一个非常普遍的问题。我遍历了许多SO问题,但对于不同的OS版本似乎总是有收获,有些相对于其他版本更受欢迎。我只是无法执行任何使我能够使文本保持居中状态的方法,无论我渲染多少次。
这是我当前处理菜单切换的代码逻辑(我没有任何自定义Flowlayout类或其他任何东西):
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
if collectionView == filterCategoriesCollectionView {
if currentFilterCategory == nil,
let category = FilterCategory(rawValue: Array(filterCellTitles.keys)[indexPath.item]) {
self.currentFilterCategory = category
filterDetailCollectionView.isHidden = false
filterDetailCollectionView.reloadData()
} else if let currentFilterCategory = currentFilterCategory {
if currentFilterCategory.rawValue == Array(filterCellTitles.keys)[indexPath.item] {
self.currentFilterCategory = nil
filterDetailCollectionView.isHidden = true
} else if let category = FilterCategory(rawValue: Array(filterCellTitles.keys)[indexPath.item]) {
self.currentFilterCategory = category
filterDetailCollectionView.isHidden = false
}
filterDetailCollectionView.reloadData()
filterDetailCollectionView.collectionViewLayout.invalidateLayout()
}
} else if collectionView == filterDetailCollectionView {
}
}
以及我在其中声明我的EstimatedSize的地方:
filterCollectionViewFlowLayout.estimatedItemSize = CGSize(width: 80, height: 30)
这是第一个渲染上的应用程序(第二个collectionView内容居中。)和第二个渲染上(隐藏后内容不再居中->不隐藏)