我有一个自定义的UICollectionViewFlowLayout动画,从右边开始插入视图,左边是删除.它通过在UICollectionViewLayoutAttributes上设置CABasicAnimation并将其应用于单元格层来实现.
CollectionViewAnimations Project on GitHub
默认的alpha为0,它的渐弱我的单元格,并提前结束我的自定义动画.如果我将alpha更改为1,那么我根本看不到我的动画.我把它设置在0.5,我有点两个….这很奇怪.你必须运行我的项目,看看我的意思.
由于某些原因,我似乎无法完全删除finalLayoutAttributesForDisappearingItemAtIndexPath中的属性的默认alpha.
任何人有任何想法?
解决方法
您正在使用performBatchUpdates(_:completion :),它已经在finalLayoutAttributesForDisappearingItemAtIndexPath(_ :)中设置了更改,因此如果添加CABasicAnimation,您将为已经发生的动画添加动画.如果您从CellLayoutAttributes中删除动画,并且只要设置UICollectionViewLayoutAttributes的transform3D就可以执行所需的操作(动画beginTime和fillMode除外).这段代码对我有用:
override func finalLayoutAttributesForDisappearingItemAtIndexPath(itemIndexPath: NSIndexPath) -> UICollectionViewLayoutAttributes? { let attributes: CellLayoutAttributes = super.finalLayoutAttributesForDisappearingItemAtIndexPath(itemIndexPath) as! CellLayoutAttributes // Default is 0,if I set it to 1.0 you don't see anything happen..' attributes.alpha = 1 let endX = -CGRectGetWidth(self.collectionView!.frame) var endTransform: CATransform3D = CATransform3DMakeTranslation(endX,0) attributes.transform3D = endTransform return attributes }