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