自定义UICollectionViewFlowLayout动画

时间:2015-08-03 21:26:43

标签: ios uicollectionviewlayout

我有一个自定义的UICollectionViewFlowLayout动画,它通过插入从右侧错开视图,并在左侧错开视图。它通过在UICollectionViewLayoutAttributes上设置CABasicAnimation并将其应用于单元层来实现。

Screen Grab

CollectionViewAnimations Project on GitHub

默认的alpha为0,它淡出我的单元格并提前结束我的自定义动画。如果我将alpha更改为1,那么我根本不会看到我的动画。我把它设置为0.5,我得到了两点......它很奇怪。您必须运行我的项目以了解我的意思。

AnimatingFlowLayout.swift

出于某种原因,我似乎无法完全删除finalLayoutAttributesForDisappearingItemAtIndexPath中属性的默认alpha。

有人有任何想法吗?

2 个答案:

答案 0 :(得分:1)

您正在使用params[:isCat][:index]已经设置了您在performBatchUpdates(_:completion:)中设置的更改的动画,因此如果您添加finalLayoutAttributesForDisappearingItemAtIndexPath(_:),则会将动画添加到已经发生的动画中。如果您从CABasicAnimation中删除动画,只需设置CellLayoutAttributes的{​​{1}},它就会执行您想要的操作(动画transform3DUICollectionViewLayoutAttributes除外)。这段代码对我很有用:

beginTime

答案 1 :(得分:0)

这对我来说很有用,因为类似的问题:

import UIKit

class NoFadeFlowLayout: UICollectionViewFlowLayout {

    override func initialLayoutAttributesForAppearingItem(at itemIndexPath: IndexPath) -> UICollectionViewLayoutAttributes? {
        let attrs = super.initialLayoutAttributesForAppearingItem(at: itemIndexPath)
        attrs?.alpha = 1.0
        return attrs
    }

    override func finalLayoutAttributesForDisappearingItem(at itemIndexPath: IndexPath) -> UICollectionViewLayoutAttributes? {
        let attrs = super.finalLayoutAttributesForDisappearingItem(at: itemIndexPath)
        attrs?.alpha = 1.0
        return attrs
    }

}

你说你无法通过这种方法获得默认的alpha版本,但是当我在tvOS 11上试用它时它会起作用。