如何使用ios中的动画使流布局无效?

时间:2019-05-29 13:35:46

标签: swift macos

我正在用Xcode开发Mojave OSX应用程序。

我想调整collectionview的大小以及该项目的位置。 目前,我调用了invalidateLayout()方法,但是该方法无需动画即可重新计算并设置大小和位置。

在GIF中,您可以看到当前行为是什么,我需要以动画方式将最后一项移至第二个row

为此,我尝试覆盖NSCollectionViewFlowLayout的此方法

  open override func prepare(forAnimatedBoundsChange oldBounds: NSRect){


    }

    open override func finalizeAnimatedBoundsChange() {

    }

但是这些永远都不会被调用,而且我不知道我需要什么样的代码来实现这种过渡。

1 个答案:

答案 0 :(得分:0)

(从问题移到答案。)

您可以覆盖viewController的viewDidLayout(或将观察者分配给框架视图)并执行以下操作:

 collectionView.animator().performBatchUpdates(nil)

这会用动画重新加载您的collectionviewLayout。