iOS 设置 UICollectionView 的最大 cell 水平间距

热门标签

,

特别声明:文章多为网络转载,资源使用一般不提供任何帮助,特殊资源除外,如有侵权请联系!

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

iOS 设置 UICollectionView 的最大 cell 水平间距

我们期望的是 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

 

未经允许不得转载:作者:SheaYang, 转载或复制请以 超链接形式 并注明出处 技术Dog|博客
原文地址:《iOS 设置 UICollectionView 的最大 cell 水平间距》 发布于2019-11-30

分享到:
赞(0)

评论 抢沙发

8 + 8 =


iOS 设置 UICollectionView 的最大 cell 水平间距

长按图片转发给朋友

Vieu4.0主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录