根据语言上下左右收集视图单元格

时间:2019-09-25 15:54:59

标签: ios swift

当一行中出现的单元格数量减少时,默认值UICollectionViewFlowLayout将增大UICollectionViewCell之间的间距。像这样:

enter image description here

但是,我需要根据语言显示左右对齐的文本。我尝试了这段代码,但是它使单词相反,并且不适用于RTL语言。

class LeftAlignedCollectionViewFlowLayout: UICollectionViewFlowLayout {

    override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? {
        let attributes = super.layoutAttributesForElements(in: rect)

        var leftMargin = sectionInset.left
        var maxY: CGFloat = -1.0
        attributes?.forEach { layoutAttribute in
            if layoutAttribute.frame.origin.y >= maxY {
                leftMargin = sectionInset.left
            }

            layoutAttribute.frame.origin.x = leftMargin

            leftMargin += layoutAttribute.frame.width + minimumInteritemSpacing
            maxY = max(layoutAttribute.frame.maxY , maxY)
        }

        return attributes
    }
}

0 个答案:

没有答案