虽然我有自己的自定义布局,但我的单元格仍有一些间距。我试图每排7个项目,但我总是得到六个有一堆间距。
这是我的布局:
class monthFlow: UICollectionViewFlowLayout, UICollectionViewDelegateFlowLayout {
func collectionView(collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
return CGSize(width: collectionView.frame.size.width/7, height: collectionView.frame.size.height/8)
}
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAtIndex section: Int) -> UIEdgeInsets {
return UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
}
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAtIndex section: Int) -> CGFloat {
return 0
}
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAtIndex section: Int) -> CGFloat {
return 0
}
但它看起来像这样:
答案 0 :(得分:2)
这是正常的。 UICollectionViewFlowLayout的内置行为是将您的单元格均匀地隔开屏幕(完全对齐)。如果你不想这样做,你必须做的比你在UICollectionViewFlowLayout子类中做的更多,以改变行为 - 你需要覆盖layoutAttributesForElementsInRect:
和layoutAttributesForItemAtIndexPath:
。
实际上,从你到目前为止所展示的代码来看,首先没有必要继承UICollectionViewFlowLayout; 你所做的一切都可以通过设置布局的属性来完成。但是要将完全理由改为左对齐,你做需要继承。
你甚至可以考虑编写自己的集合视图布局而不是作为UICollectionViewFlowLayout的子类,特别是因为一个月的布局不是流布局 - 它总是由7个单元组成,这不是什么流程布局确实如此。所以,在某种程度上,你在这里的错误是认为你可以在没有首先编写自己的布局的情况下做到这一点。