Swift 中特定部分的 UICollectionView 粘性标头
Posted
技术标签:
【中文标题】Swift 中特定部分的 UICollectionView 粘性标头【英文标题】:UICollectionView sticky header for specific section in Swift 【发布时间】:2019-12-26 11:35:40 【问题描述】:我正在尝试为特定部分创建一个粘性补充标题,当特定部分触及导航时,它始终保持在顶部,并且不会与其他部分标题重叠。到目前为止,我发现的解决方案一直有效到 900 collectionView.contentOffset.y
。我跟着这个代码StickyLayout.swift。
我必须设置sectionHeadersPinToVisibleBounds = false
,因为我只想在顶部粘贴一个标题,同时根据位置向上/向下滚动。其他部分标题不应推出粘性标题。
因为我在 Swift 中做这件事,所以在 Swift 中有一个例子会很棒。
【问题讨论】:
【参考方案1】:这导致当您在 for 循环中迭代时,标题的布局属性不包含在属性数组中,从而导致布局位置不再调整到其在屏幕顶部的“粘性”位置。
在 for 循环之前添加这些行以将粘性标题的布局属性添加到属性数组(如果它们不存在):
override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]?
var layoutAttributes = [UICollectionViewLayoutAttributes]()
guard let cellLayoutAttributesInRect = super.layoutAttributesForElements(in: rect) else return nil
// add the sticky header's layout attribute to the attributes array if they are not there
if let stickyHeaderIndexPath = stickyHeaderIndexPath,
let stickyAttribute = layoutAttributesForSupplementaryView(ofKind: UICollectionView.elementKindSectionHeader, at: stickyHeaderIndexPath),
!layoutAttributes.contains(stickyAttribute)
layoutAttributes.append(stickyAttribute)
return layoutAttributes
【讨论】:
以上是关于Swift 中特定部分的 UICollectionView 粘性标头的主要内容,如果未能解决你的问题,请参考以下文章
Swift - 如果项目滚动一点,UICollection 快速恢复
Table Cell 中的 UICollection 视图在 Swift 3 中不显示图像