第一次渲染后,flowlayout始终会重置/弄乱

时间:2019-07-19 17:18:02

标签: swift uicollectionview uicollectionviewlayout

是否有什么好方法可以在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内容居中。)和第二个渲染上(隐藏后内容不再居中->不隐藏) enter image description here enter image description here

0 个答案:

没有答案