ios – 自定义UICollectionViewFlowLayout动画

前端之家收集整理的这篇文章主要介绍了ios – 自定义UICollectionViewFlowLayout动画前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个自定义的UICollectionViewFlowLayout动画,从右边开始插入视图,左边是删除.它通过在UICollectionViewLayoutAttributes上设置CABasicAnimation并将其应用于单元格层来实现.

CollectionViewAnimations Project on GitHub

默认的alpha为0,它的渐弱我的单元格,并提前结束我的自定义动画.如果我将alpha更改为1,那么我根本看不到我的动画.我把它设置在0.5,我有点两个….这很奇怪.你必须运行我的项目,看看我的意思.

AnimatingFlowLayout.swift

由于某些原因,我似乎无法完全删除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
}

猜你在找的iOS相关文章