美文网首页
iOS 小笔记 | 设置 UICollectionView 的最

iOS 小笔记 | 设置 UICollectionView 的最

作者: Lol刀妹 | 来源:发表于2019-11-15 22:52 被阅读0次

    常用的UICollectionViewFlowLayout只有一个设置 cell 最小水平间距的属性minimumInteritemSpacing,但是只设置最小间距有时并不能满足我们的需求,如:

    我们期望的是 cell 与 cell 之间的间距是固定的,上图显然不满足要求。

    这个时候可以通过对UICollectionViewFlowLayout进行简单的扩展达到目的,方法是继承UICollectionViewFlowLayout然后重写layoutAttributesForElements方法:

    class MaxCellSpacingLayout: UICollectionViewFlowLayout {
        
        /// 最大cell水平间距
        var maximumInteritemSpacing: CGFloat = 0.0
        
        override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? {
            
            let attributes = super.layoutAttributesForElements(in: rect)
            if attributes?.count == 0 {
                return attributes
            }
            
            let firstCellOriginX = attributes?.first?.frame.origin.x
            
            if let count = attributes?.count {
                
                for i in 1..<count {
                    let currentLayoutAttributes = attributes![i]
                    let previousLayoutAttributes = attributes![i-1]
                    
                    if currentLayoutAttributes.frame.origin.x == firstCellOriginX {
                        continue
                    }
                    
                    let previousOriginMaxX = previousLayoutAttributes.frame.maxX
                    if currentLayoutAttributes.frame.origin.x - previousOriginMaxX > maximumInteritemSpacing {
                        var frame = currentLayoutAttributes.frame
                        frame.origin.x = previousOriginMaxX + maximumInteritemSpacing
                        currentLayoutAttributes.frame = frame
                    }
                }
                
            }
            
            return attributes
            
        }
        
    }
    

    使用:

    layout.maximumInteritemSpacing = 20
    

    相关文章

      网友评论

          本文标题:iOS 小笔记 | 设置 UICollectionView 的最

          本文链接:https://www.haomeiwen.com/subject/skpsictx.html