我需要为UICollectionView和UICollectionViewCell框架设置动画。最终结果是我所得到的,但在这两者之间,似乎有些幻影单元与正在动画的实际单元混合在一起。 CV会设置为其他大小的动画,并且CV单元将根据对CV的collectionViewLayout进行的设置来匹配新的大小。
我的最终目的是使用UIViewPropertyAnimator()进行此操作,但是即使动画是由标准UIView动画触发的,您也会遇到相同的问题。
调用的主要方法是prepareLayout()。
"compilerOptions": {
"outDir": "build",
"module": "esnext",
"target": "es5",
"lib": ["es6", "dom", "es2016", "es2017"],
"sourceMap": true,
"allowJs": false,
"jsx": "react",
"declaration": true,
"moduleResolution": "node",
"forceConsistentCasingInFileNames": true,
"noImplicitReturns": true,
"noImplicitThis": true,
"noImplicitAny": true,
"strictNullChecks": true,
"suppressImplicitAnyIndexErrors": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"removeComments": true,
"preserveConstEnums": true,
"skipLibCheck": true
},
"include": ["./src/**/*"],
}
可以看出,我一直在玩CV的performBatchUpdates()和setCollectionViewLayout(),但无济于事。我需要reloadData(),因为诸如fontSize之类的东西在动画过程中会发生变化,这在使用UIViewPropertyAnimator()时将更为重要。
我的单元格是UICollectionViewCell的子类,其中具有UIButton。按钮的交互被禁用,因此我可以处理CV中的所有内容。
对如何纠正此问题的想法表示赞赏。
编辑:1月26日 这是一个公共回购协议,是该应用程序的精简版本,但可以说明问题所在: https://github.com/Phantom-59/CVAnimatorTest