gpt4 book ai didi

swift - Collection View : HeaderView Bounce

转载 作者:行者123 更新时间:2023-11-28 07:50:16 24 4
gpt4 key购买 nike

CollectionView 很新,所以希望在这里有一个方向。

我有一个启用了 header 的 CollectionView。一切正常,但我希望 HeaderView 在滚动主要部分时保持静止。

问题:

  • 在给定 Collection View 的情况下,在 iOS 中这可能吗?或者我必须为页眉创建一个专用的静态 View ?

我在 UICollectionViewFlowLayout 中设置了以下内容

    if let layout: UICollectionViewFlowLayout = self.collectionViewLayout as? UICollectionViewFlowLayout {
layout.scrollDirection = .vertical
layout.sectionHeadersPinToVisibleBounds = true
}

这使得 header 的行为如下:

  • 当向下滚动主集合时,标题会上升,直到它的下边距到达屏幕顶部,然后聚集在屏幕中间
  • 当上升时,标题跟随主集合并隐藏起来

我很确定我不是唯一遇到此问题的人。也许我在这里做错了什么?

最佳答案

layout.sectionHeadersPinToVisibleBounds = true

这使您的标题:

  • 向下滚动时坚持单元格
  • 单元格底部到达标题底部后开始隐藏

我看到您希望 header 始终保持静止。当然,正如您所说,您可以在 collectionView 之上添加一个 UIView,这样就可以完成工作。一个不同的解决方案可能是这样的:

func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {
let header = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: "header", for: indexPath)
headerContainer.backgroundColor = .yellow
headerContainer.frame = header.frame
header.layer.masksToBounds = false // that's important
header.addSubview(self.headerContainer)
return header
}

所以基本上,我们在我们的 header 中添加了一个 subview ( header 需要是透明的)。现在,我们正在使用 UICollectionView 是可滚动的这一事实:

func scrollViewDidScroll(_ scrollView: UIScrollView) {
let offset = scrollView.contentOffset.y
if offset < 0 {
headerContainer.transform = CGAffineTransform(translationX: 0, y: offset)
}
}

因此,如果我们按偏移值 向下滚动,我们会通过将偏移值 添加到容器的 Y 位置来转换容器。

不幸的是,我还没有想出向上滚动的情况(一段时间后它仍然开始隐藏)——我想这是可行的。

我基于这个话题: TableView header bouncing

无论如何,我想我宁愿在 UICollectionView 之外创建一个 UIView。

关于swift - Collection View : HeaderView Bounce,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49897513/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com