ios - UICollectionView referenceSizeForHeaderInSection 动画

标签 ios swift uicollectionview

是否可以为 UICollectionView header (也称为 UICollectionElementKindSectionHeader)大小更改的帧更改设置动画?

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

目前我把它设置成这样:

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

我通过点击按钮调用此函数来更改 Collection View 高度

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

这行得通,但我还没有找到关于动画帧变化的文档。这可能吗?

最佳答案

您可以通过在 UIView 的动画 block 中调用它们来为任何可动画的 View 更改设置动画:

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

关于ios - UICollectionView referenceSizeForHeaderInSection 动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42683863/

相关文章:

ios - Pod 更新后找不到“Parse/PFFile.h”文件

swift - 重播时如何从内存中删除级别 1?

ios - 如何设置动态 UICollectionView 单元格高度?

ios - UICollectionView 水平滚动不滚动到最后一项

ios - UICollectionView 在 swift 2 中滚动时更改单元格数据

ios - 使用 google plus API 是否可以获取 gmail 联系人

ios - 自 iOS 13 以来,UITabBar 图标未垂直对齐

ios - `viewDidLayoutSubviews` 中的帧计算

arrays - 返回数组引用的 Swift 函数

ios - 如何让AVPlayer从URL播放mp3而无需等待快速加载整个文件