如果您有一个集合视图并且通过插入几个来更改项目,则默认布局会同时淡出它们。是否有可能一个接一个地淡化它们?
我在考虑对UICollectionViewLayout
进行子类化,但我不确定这是否会像那样工作。
我是否真的必须添加逻辑以便不会同时发生多个插入? (这样我插入一个项目,等一下,插入第二个项目,...手动完成)必须有一个更好的方法。我希望
感谢您的帮助
答案 0 :(得分:4)
如果你想一次淡化它们,你将不得不在模型中添加一个并重新加载那个项目然后延迟(例如asyncAfter
)并进行下一个项目。请注意,您不能一次将所有这些添加到模型中,只需延迟重新加载集合视图的各个项目。您必须推迟模型的更新和重新加载集合视图的相应项。 E.g:
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)])
}
}
}
产量:
不需要UICollectionViewLayout
的子类化。