调整 UICollectionView 中特定部分的插图

Posted

技术标签:

【中文标题】调整 UICollectionView 中特定部分的插图【英文标题】:Adjust insets of a specific section in UICollectionView 【发布时间】:2016-08-09 18:38:57 【问题描述】:

    insetForSectionAtIndex(在 DelegateFlowLayout 上)可以为一个部分中的所有单元格设置插图

    sectionInset(在 FlowLayout 上)允许设置适用于所有部分的插图。

但是,我正在寻找一种仅将插图应用到一个特定部分的方法 - 这可能吗?

【问题讨论】:

【参考方案1】:

你必须用这个方法在你的类中实现UICollectionViewDelegateFlowLayout

对于 Swift 4

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets 

    var edgeInsets = UIEdgeInsets()
    if section == THE_SECTION_YOU_WANT 
        // edgeInsets configuration stuff
    

    return edgeInsets;

对于 Swift 3

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAtIndex section: Int) -> UIEdgeInsets 

    var edgeInsets = UIEdgeInsets()
    if section == THE_SECTION_YOU_WANT 
        // edgeInsets configuration stuff
    

    return edgeInsets;


【讨论】:

我之前尝试过,它似乎将插入应用于该部分中的所有元素。有没有办法可以将它应用到整个部分,而不是每个元素? @GauravSharma 此方法将插入应用到整个部分,这就是它给它一个部分Int 的原因。 刚刚再次尝试 - 结果相同 - 它将插入应用到部分中的每个单元格,而不是部分。 @GauravSharma 和有什么区别?是否要将插入应用到页眉部分和页脚部分? 不,我想插入整个部分(不是部分中的每个项目)。【参考方案2】:

为 swift 4 命名:

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets 
...

【讨论】:

【参考方案3】:

你会从UICollectionViewDelegateFlowLayout 协议中做这样的事情:

func collectionView(_ collectionView: UICollectionView,
                        layout collectionViewLayout: UICollectionViewLayout,
                        insetForSectionAt section: Int) -> UIEdgeInsets 

        switch section 
        case 0:
            return UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
        case 1:
            return UIEdgeInsets(top: 10, left: 0, bottom: 10, right: 0)
        
    

【讨论】:

以上是关于调整 UICollectionView 中特定部分的插图的主要内容,如果未能解决你的问题,请参考以下文章

UICollectionView 滚动到特定部分

UICollectionView insertItem -> 调整动画时间?

动态调整 UICollectionView 大小以确保没有项目间距

UICollectionView 在特定部分开始

如何使 UICollectionview 出现在特定部分

在不使用 reload 方法的情况下调整 UICollectionView 的单元格