更改UICollectionViewLayout时出现奇怪的动画行为

时间:2018-08-02 15:17:14

标签: swift uicollectionview uicollectionviewlayout uicollectionviewflowlayout

我有一个具有两个不同布局的UICollectionView。

小布局-每行3个单元格 位布局-每行1个单元格

当我将布局从小到大更改时,会出现动画-单元会变大到所需的大小。 但是回来似乎有点奇怪。所有消失,单元格开始出现,并从角落获取所有屏幕。

布局更改代码

    if currentZoomMode == .x3 {
        self.collectionView?.insertItems(at: [IndexPath.init(item: pageDataModel.pageDataArray.count, section: 0)])
        UIView.animate(withDuration: 0.3, animations: {
            self.view.layoutIfNeeded()
        }) { (_) in }
    } else {
        if self.collectionView?.editingModeEnabled == true {
            self.collectionView?.editingModeEnabled = false
        } else {
            self.collectionView?.deleteItems(at: [IndexPath.init(item: self.pageDataModel.pageDataArray.count, section: 0)])
            UIView.animate(withDuration: 0.3, animations: {
                self.view.layoutIfNeeded()
            }) { (_) in }
        }
    }

    let layout : UICollectionViewFlowLayout = self.currentZoomMode == .x3 ? self.smallFlowLayout : self.bigFlowlayout
    self.collectionView?.collectionViewLayout.invalidateLayout()
    self.collectionView?.setCollectionViewLayout(layout, animated: true)

大型和大型布局几乎相同,只是项目大小不同。

0 个答案:

没有答案