UICollectionView referenceSizeForHeaderInSection动画

时间:2017-03-08 23:25:27

标签: ios swift uicollectionview

是否可以为UICollectionView标头(也称为UICollectionElementKindSectionHeader)尺寸更改的帧更改设置动画?

换句话说,我希望我的UICollectionView标题有两个不同的可能帧,一个扩展(更大的高度)和折叠模式(更小的高度)。通过点击某个按钮,我希望标题可以在展开和折叠模式之间切换,并带有自定义动画。

目前我已将其设置为:

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize {
    return CGSize(width: 0, height: HEADER_HEIGHT)
}

我通过点击按钮调用此功能来更改集合视图高度

HEADER_HEIGHT = HEADER_HEIGHT == 100 ? 200 : 100
self.collectionView?.collectionViewLayout.invalidateLayout()

这有效,但我还没有找到有关动画帧更改的文档。这甚至可能吗?

1 个答案:

答案 0 :(得分:2)

您可以通过在UIView的动画块中调用它们来设置任何可动画视图更改的动画:

    UIView.animate(withDuration: 0.5) {
        self.collectionView?.collectionViewLayout.invalidateLayout()
    }