fileprivate func layoutAttributes(forItemsInLineWith layoutAttributes: UICollectionViewLayoutAttributes) -> [UICollectionViewLayoutAttributes] {
guard let lineWidth = contentWidth else {
return [layoutAttributes]
}
var lineFrame = layoutAttributes.frame
lineFrame.origin.x = sectionInset.left
lineFrame.size.width = lineWidth
// Need to be add
// bug fix for super.layoutAttributesForElements(in:)
// if there are three row (Row1, Row2, Row3), and rows step by step closly, such as
// Row1: (x: 0, y: 0, width: 375, 100)
// Row2: (x: 0, y: 100, width: 375, height: 100)
// Row3: (x: 0, y: 200, width: 375, height: 100)
// then super.layoutAttributesForElements() will reture 3 values(Row1, Row2, Row3), that is incorrect
if lineFrame.height > 2 {
lineFrame.origin.y += 1
lineFrame.size.height -= 2
}
return super.layoutAttributesForElements(in: lineFrame) ?? []
}