【问题标题】:Adjust insets of a specific section in UICollectionView调整 UICollectionView 中特定部分的插图
【发布时间】:2016-08-09 18:38:57
【问题描述】:
  1. insetForSectionAtIndex(在 DelegateFlowLayout 上)可以为一个部分中的所有单元格设置插图

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

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

【问题讨论】:

    标签: ios swift uicollectionview uicollectionviewlayout uicollectionviewdelegate


    【解决方案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)
              }
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-17
        • 2012-09-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多