美文网首页
处理swift使用自动布局的时候,collectionView设

处理swift使用自动布局的时候,collectionView设

作者: sws1314 | 来源:发表于2021-06-24 11:51 被阅读0次

处理swift使用自动布局的时候,collectionView设置间距与实际不符的问题

class SWSCollectionViewFlowLayout: UICollectionViewFlowLayout {

    override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? {
        let atteibutes: [UICollectionViewLayoutAttributes] = super.layoutAttributesForElements(in: rect)!
        
        // 从第二个循环到最后一个
        for index in 1..<atteibutes.count {
            // 当前attributes
            let currentLayoutAttributes: UICollectionViewLayoutAttributes = atteibutes[index]
            // 上一个attributes
            let preLayoutAttributes: UICollectionViewLayoutAttributes = atteibutes[index - 1]
            //我们想设置的最大间距,可根据需要改
            let maximumSpace: CGFloat = 0
            
            // 前一个cell的最右边
            let origin = preLayoutAttributes.frame.maxX
            
            // 如果当前一个cell的最右边加上我们想要的间距加上当前cell的宽度依然在contentSize中,我们改变当前cell的原点位置
            // 不加这个判断的后果是,UICollectionView只显示一行,原因是下面所有cell的x值都被加到第一行最后一个元素的后面了
            if origin + maximumSpace + currentLayoutAttributes.frame.size.width < self.collectionViewContentSize.width {
                var frame = currentLayoutAttributes.frame
                frame.origin.x = origin + maximumSpace
                currentLayoutAttributes.frame = frame
            }
        }
        return atteibutes
    }
}

相关文章

网友评论

      本文标题:处理swift使用自动布局的时候,collectionView设

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