繁体   English   中英

具有自定义布局的UICollectionView - 以编程方式添加补充视图的方式/位置?

[英]UICollectionView with custom layout - how/where to add a supplementary view programmatically?

我正在使用圆形布局的示例,使用UICollectionView和故事板中定义的自定义布局类。

是否有某种教程或逐步说明如何将补充视图添加到使用自定义布局的集合视图?

我一直在查看Introducing Collection Views示例,但无法真正理解在该项目中如何定义补充视图。 看起来它们是使用流程布局在故事板中注册的,但是我不知道该项目中的后续布局变化如何移动补充视图。

我们的想法是为layoutAttributesForElements(in:)的补充视图返回UICollectionViewLayoutAttributes 例如,在您的UICollectionViewLayout子类中:

var headerAttributes: UICollectionViewLayoutAttributes!

override func prepare() {
    headerAttributes = UICollectionViewLayoutAttributes(
        forSupplementaryViewOfKind: UICollectionView.elementKindSectionHeader,
        with: IndexPath(item: 0, section: 0))
    headerAttributes.frame = CGRect(x: 0, y: 0, width: 100, height: 40)
}

override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? {
    if headerAttributes.frame.intersects(rect) {
        return [headerAttributes]
    } else {
        return nil
    }
}

重要的是使用forSupplementaryViewOfKind: initialiser创建属性。 通过从此方法返回补充视图的属性,集合视图知道这些视图存在以及它们的位置,并将调用collectionView(_:viewForSupplementaryElementOfKind:at:)以从其数据源获取实际视图。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM