2

我有一个NSCollectionViewLayout非常相似的基本实现NSCollectionViewFlowLayout

它将项目放置在水平行中。如果没有足够的空间,则将下一个项目添加到下一行,依此类推。

我的问题:当一个项目从第一行移动到第二行时,如何为布局更改设置动画?

这是一个例子:

重新布局

注意项目#3 如何从第一行“跳跃”到第二行。我想为这种变化制作动画。

有很多方法可以动画添加/删除项目,但我无法弄清楚如何在没有项目更改时为布局更改设置动画。

4

1 回答 1

0

您希望在布局子类中覆盖的方法是prepare(forAnimatedBoundsChange:)finalizeAnimatedBoundsChange()

从文档中:

open func prepare(forAnimatedBoundsChange oldBounds: NSRect) // NSCollectionView calls this when its bounds have changed inside an animation block before displaying items in its new bounds

为集合视图边界的动画更改或项目的插入或删除准备布局对象。

open func finalizeAnimatedBoundsChange() // also called inside the animation block

在对集合视图的边界进行任何动画更改后或在插入或删除项目后进行清理。

于 2018-09-22T15:53:05.833 回答