我有一个自定义的UICollectionViewFlowLayout动画,它通过插入从右侧错开视图,并在左侧错开视图。它通过在UICollectionViewLayoutAttributes上设置CABasicAnimation并将其应用于单元层来实现。
CollectionViewAnimations Project on GitHub
默认的alpha为0,它淡出我的单元格并提前结束我的自定义动画。如果我将alpha更改为1,那么我根本不会看到我的动画。我把它设置为0.5,我得到了两点......它很奇怪。您必须运行我的项目以了解我的意思。
出于某种原因,我似乎无法完全删除finalLayoutAttributesForDisappearingItemAtIndexPath中属性的默认alpha。
有人有任何想法吗?
答案 0 :(得分:1)
您正在使用params[:isCat][:index]
已经设置了您在performBatchUpdates(_:completion:)
中设置的更改的动画,因此如果您添加finalLayoutAttributesForDisappearingItemAtIndexPath(_:)
,则会将动画添加到已经发生的动画中。如果您从CABasicAnimation
中删除动画,只需设置CellLayoutAttributes
的{{1}},它就会执行您想要的操作(动画transform3D
和UICollectionViewLayoutAttributes
除外)。这段代码对我很有用:
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上试用它时它会起作用。