我试图让我的单元格之间的间距= 0
期望结果的示例:
我现在拥有的东西(iPhone 6):
我的代码:
- (UICollectionViewFlowLayout *)setCollectionViewFlowLayout
{
UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
//iphone5 100
//iphone6 118
layout.itemSize = CGSizeMake(118, 118);
layout.footerReferenceSize = CGSizeMake(0, 0);
layout.sectionInset = UIEdgeInsetsMake(0, 0, 0, 0);
layout.minimumInteritemSpacing = 0.0;
layout.minimumLineSpacing = 0.0;
return layout;
}
- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section
{
return UIEdgeInsetsMake(0, 0, 0, 0);
}
我对IB的看法:
我错过了什么?提前谢谢!
答案 0 :(得分:3)
它表示项目之间的最小间距,不固定间距。 UICollectionViewFlowLayout
总是尝试在一行中设置尽可能多的项目。
您应该设置UICollectionViewCells
动态的宽度,并根据UICollectionView
的大小计算它们。
所以,例如。如果你想要一行3个单元格,将UICollectionView
的宽度除以3,你应该有单元格的宽度。这需要对这些值进行一些实验。
答案 1 :(得分:0)
如果未设置,请更新您的cellize和imageview大小。你必须设置你的imageview的约束适合单元格。
替换
layout.itemSize = CGSizeMake(118, 118);
与
layout.itemSize = CGSizeMake([UIScreen mainScreen].bounds.size.width /3, [UIScreen mainScreen].bounds.size.width /3);
我设置了screenize,因为我认为你的collectionview适合屏幕宽度。将其替换为您的集合视图大小。
因为您试图显示3个单元格,但您为项目设置了固定宽度。所以只需更新您的单元格大小。因为在不同的屏幕中,您的集合视图将会发生变化,因此您也应该更新单元格大小。