iOS - UICollectionView - 一次插入多个项目时,如何逐个淡化它们而不是同时淡化它们?

Qua*_*ntm 5 uicollectionview uicollectionviewlayout swift

如果您有一个集合视图并且您通过插入几个来更改项目,则默认布局会同时淡出它们.是否有可能一个接一个地淡化它们?

我在考虑子类化UICollectionViewLayout,但我不确定这是否会像那样工作.

我是否真的必须添加逻辑,以便不会同时发生多个插入?(这样我插入一个项目,等一下,插入第二个项目,...手动完成)必须有更好的方法.我希望

谢谢你的帮助

Rob*_*Rob 4

如果您想一次淡入一项,则必须将一项添加到模型中并重新加载该一项,然后延迟(例如asyncAfter)并执行下一项。请注意,您无法一次将所有它们添加到模型中,而只是推迟集合视图中各个项目的重新加载。您必须推迟模型的更新和集合视图中相应项目的重新加载。例如:

private func append(_ objectsToAdd: [Foo]) {
    for i in 0 ..< objectsToAdd.count {
        DispatchQueue.main.asyncAfter(deadline: .now() + Double(i) * 0.25) {
            self.objects.append(objectsToAdd[i])
            self.collectionView?.insertItems(at: [IndexPath(item: self.objects.count - 1, section: 0)])
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

得出:

在此输入图像描述

不需要子类化UICollectionViewLayout