UICollectionViewCell Spacing 设置为 0 但仍然有间距
UICollectionViewCell Spacing is set to 0 but still have spacing
我正在尝试使我的单元格之间的间距 = 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 上有什么:
我错过了什么?提前致谢!
如果您没有设置,请更新您的单元格大小和图像视图大小。您必须将图像视图的约束设置为适合单元格。
替换
layout.itemSize = CGSizeMake(118, 118);
和
layout.itemSize = CGSizeMake([UIScreen mainScreen].bounds.size.width /3, [UIScreen mainScreen].bounds.size.width /3);
我设置屏幕尺寸是因为我假设您的 collectionview 适合屏幕宽度。将其替换为您的 collectionview 大小。
因为您试图显示 3 个单元格,但您为项目设置了固定宽度。所以只需更新您的单元格大小。因为在不同的屏幕上你的 collectionview 宽度会改变所以你也应该更新你的单元格大小。
它说的是项目之间的最小间距,不是固定间距。 UICollectionViewFlowLayout
总是尝试在一行中设置尽可能多的项目。
您应该使 UICollectionViewCells
的宽度动态变化,并根据 UICollectionView
的大小进行计算。
因此,例如。如果您想要一行 3 个单元格,请将 UICollectionView
的宽度除以 3,您应该得到单元格的宽度。不过,这需要对这些值进行一些试验。
今天遇到这个问题,单元格之间插入了几个像素,可能是小数精度丢失导致的,比如340除以7,取不到整数。
多次加上将导致 one-pixel 差异。
我正在尝试使我的单元格之间的间距 = 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 上有什么:
我错过了什么?提前致谢!
如果您没有设置,请更新您的单元格大小和图像视图大小。您必须将图像视图的约束设置为适合单元格。
替换
layout.itemSize = CGSizeMake(118, 118);
和
layout.itemSize = CGSizeMake([UIScreen mainScreen].bounds.size.width /3, [UIScreen mainScreen].bounds.size.width /3);
我设置屏幕尺寸是因为我假设您的 collectionview 适合屏幕宽度。将其替换为您的 collectionview 大小。
因为您试图显示 3 个单元格,但您为项目设置了固定宽度。所以只需更新您的单元格大小。因为在不同的屏幕上你的 collectionview 宽度会改变所以你也应该更新你的单元格大小。
它说的是项目之间的最小间距,不是固定间距。 UICollectionViewFlowLayout
总是尝试在一行中设置尽可能多的项目。
您应该使 UICollectionViewCells
的宽度动态变化,并根据 UICollectionView
的大小进行计算。
因此,例如。如果您想要一行 3 个单元格,请将 UICollectionView
的宽度除以 3,您应该得到单元格的宽度。不过,这需要对这些值进行一些试验。
今天遇到这个问题,单元格之间插入了几个像素,可能是小数精度丢失导致的,比如340除以7,取不到整数。 多次加上将导致 one-pixel 差异。