swift中UICollectionview的自定义页脚视图

Posted

技术标签:

【中文标题】swift中UICollectionview的自定义页脚视图【英文标题】:Custom Footer view for UICollectionview in swift 【发布时间】:2014-11-12 16:52:53 【问题描述】:

我正在快速重新编写一个 min 的 Objective-C 应用程序,并决定在我的情况下,集合视图比 tableview 效果更好。所以我已经完全按照我想要的方式设置了集合视图,现在我需要在我的集合视图中添加一个页脚。

在 Objective-C 中这对我来说非常简单,我所做的只是创建一个 UIView,向其中添加对象,然后像这样将其添加到我的 tableview 中。

self.videoTable.tableFooterView = footerView;

现在我一直在尝试在我的收藏视图中获得类似的解决方案,但是到目前为止我没有运气。

有没有简单的.collectionviewFooterView 或者我可以添加我的 UIView 的东西?

编辑 我发现了类似的想法 HERE 如果这有助于创建答案

编辑

我一直在想办法实现这一点,所以现在我的想法是使用以下代码将页脚视图添加到集合视图的末尾:

var collectionHeight = self.collectionView.collectionViewLayout.collectionViewContentSize().height

footerView.frame = CGRectMake(0, collectionHeight, screenSize.width, 76)

我在使用此解决方法时遇到的唯一问题是我需要为 colletionView 的 contentView 添加更多空间,而我对此没有运气

我的解决方案

我使用变通方法解决了它(不是最漂亮的,但它有效),我使用简单的方法将 UIView 添加到 uicollectionview

footerView.frame = CGRectMake(0, collectionHeight - 50, screenSize.width, 50)
self.collectionView.addSubview(footerView)

并使用此设置布局插图:

alLayout.contentInsets = UIEdgeInsetsMake(2, 2, 52, 2)

【问题讨论】:

你能提供一个示例代码吗?你也可以提供你在哪里设置上面的代码吗?! 【参考方案1】:

集合视图处理页眉和页脚的方式与表格视图不同。您需要:

    使用以下方法注册您的页脚视图类:

    registerClass(myFooterViewClass, forSupplementaryViewOfKind: UICollectionElementKindSectionFooter, withReuseIdentifier: "myFooterView")
    

    要么在你的集合视图布局上设置headerReferenceSize,要么在你的delegate 中实现collectionView:layout:referenceSizeForHeaderInSection:

    dataSource 中通过以下方法返回页脚视图:

    func collectionView(collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, atIndexPath indexPath: NSIndexPath) -> UICollectionReusableView 
        let view = collectionView.dequeueReusableSupplementaryViewOfKind(UICollectionElementKindSectionFooter, withReuseIdentifier: "myFooterView", forIndexPath: indexPath)
        // configure footer view
        return view
    
    

我认为这就是一切!

【讨论】:

我为我的布局使用了一个自定义类,但我认为它没有页脚 正确 - 只有当您的布局源自 UICollectionViewFlowLayout 时,这才有效。 给了你支票,因为它是一个很好的答案,并且在大多数情况下都可以正常工作 我不得不在 myFooterViewClass 的末尾使用 .self,如下所示:collectionView.register(MyFooterViewClass.self, forSupplementaryViewOfKind: UICollectionElementKindSectionFooter, withReuseIdentifier: "myFooterView")

以上是关于swift中UICollectionview的自定义页脚视图的主要内容,如果未能解决你的问题,请参考以下文章

使用 Swift 的 UICollectionView 错误

如何在 Swift 中更改 UICollectionView 的 targetContentOffset?

Swift 3 中的 UICollectionView + NSFetchedResultsController

swift 在Swift中键入UITableView和UICollectionView Dequeuing

如何在 swift 中使用 @resultbuilder 使用 UICollectionView?

在 Swift 中更改 UICollectionView 的数据源