我有一个NSCollectionViewLayout
的基本实现,非常类似于NSCollectionViewFlowLayout
:
它将项目水平放置。如果没有足够的空间,则将下一项添加到下一行,依此类推。
我的问题:当项目从第一行移动到第二行时,如何为布局更改设置动画?
这是一个例子:
请注意项目#3如何从第一行跳到第二行。我想动画化这一变化。
有很多方法可以对添加/删除项目进行动画处理,但是当项目没有变化时,我无法弄清楚如何对布局更改进行动画处理。
答案 0 :(得分: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
在对集合视图的边界进行任何动画更改之后,或者在插入或删除项目之后进行清理。