UICollectionView缺少一些单元格

时间:2016-11-16 19:31:07

标签: ios uicollectionview swift3 uicollectionviewcell uicollectionviewlayout

我正在尝试制作自定义日历。问题是,在应用我的自定义UICollectionViewFlowLayout后,一些单元格开始消失,而第一部分看起来很好,但其他部分则没有。

第1节

Section 1

第2节

Section 2

这是我的flowLayout类的代码。

class CalendarFlowLayout: UICollectionViewFlowLayout {

override func layoutAttributesForItem(at indexPath: IndexPath) -> UICollectionViewLayoutAttributes? {
    let layoutAttributesForCells = super.layoutAttributesForItem(at: indexPath)?.copy() as! UICollectionViewLayoutAttributes
    return recountedAttributesForCell(layoutAttributesForCells)
}

override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? {
    return super.layoutAttributesForElements(in: rect)?.map {
        attributes in
        let copiedAttributes = attributes.copy() as! UICollectionViewLayoutAttributes
        return recountedAttributesForCell(copiedAttributes)
    }

}

func recountedAttributesForCell(_ attributes: UICollectionViewLayoutAttributes) -> UICollectionViewLayoutAttributes {
    if let collectionView = self.collectionView {

        let sectionOffset = CGFloat(attributes.indexPath.section) * collectionView.frame.height

        let itemsPerRow : CGFloat = 7
        let cellSize : CGFloat = collectionView.frame.width / itemsPerRow
        attributes.size = CGSize(width: cellSize, height: cellSize)

        let xOffset : CGFloat = CGFloat(attributes.indexPath.item % 7) * cellSize
        var yOffset : CGFloat = CGFloat(attributes.indexPath.item / 7) * cellSize
        yOffset += sectionOffset

        attributes.frame = CGRect(x: xOffset, y: yOffset, width: cellSize, height: cellSize)
    }
    return attributes
}
}

0 个答案:

没有答案