为什么在集合视图中显示奇怪的行?

时间:2017-08-30 11:38:33

标签: ios swift uicollectionview

我目前正在创建一个自定义日历,我尝试连续显示七个单元格,但不幸的是,有些行随机出现,任何人都可以引导错误。我已经附加了屏幕截图

Screen shot of the calendar page

我附上了示例代码:

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    let s = CGSize(width: CGFloat(UIScreen.main.bounds.size.width / 7), height: CGFloat(UIScreen.main.bounds.size.height / 7))
    return s
}

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
    return UIEdgeInsetsMake(0,0,0,0)
}

func numberOfSections(in collectionView: UICollectionView) -> Int {

    return 1
}

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {

    return numDays+weekday
}

2 个答案:

答案 0 :(得分:0)

您可以通过UICollectionViewDelegateFlowLayout种方法

进行管理
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
        return 0 // OR change as you need
    }

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
        return 0 // OR change as you need
    }

答案 1 :(得分:0)

计算单元格的大小时会出现此行为。

听到,你在做:

func collectionView(_ collectionView: UICollectionView, layout 
    collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    let s = CGSize(width: CGFloat(UIScreen.main.bounds.size.width / 7), height: CGFloat(UIScreen.main.bounds.size.height / 7))
    return s
}

单元格的大小可能不会四舍五入,因此运行时会尽力用你的约束来填充集合视图,但最终会遇到这些小缺陷。