我已经抬头了: -
UICollectionView distance between cells?
Cell spacing in UICollectionView
Decrease Space between UICollectionViewCells
但他们都没有为我工作。
我也尝试过实现UICollectionViewDelegateFlowLayout并实现
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
return 3
}
但它对它没有任何影响。
请看一下iPhone 7 / iPhone 5s / iPhone 7 Plus中的以下截图(图片顺序相同)
我也看起来自我调整细胞,但我不想要自我调整细胞,因为我的项目大小总是固定的并且符合我的要求。
我还在故事板中设置了最小单元格间距,但它对布局没有影响。
如何减少两个单元格之间的巨大差距(interitem间距),避免iPhone 5S中的剪裁以及iPhone 7 Plus中右侧的空白区域(您无法看到背景是白色的)
任何见解都将受到赞赏。
答案 0 :(得分:3)
如果你的细胞大小是“固定的”,你就不能避免这个差距,因为你已经硬编码固定的宽度!
您需要计算collectionView.frame的总宽度并将其除以2,并且还要包括项目之间的间距,而不是“固定”大小。快速键入的示例:
(计算细胞大小)
CGFloat spacing = 3.0f
CGFloat itemWidth = collectionView.frame.size.width / 2 - spacing
CGSize totalSize = itemWidth, itemWidth
答案 1 :(得分:0)
尝试在width
方法中设置每个单元格的height
和sizeForItemAtIndexPath
。
- (CGSize)collectionView:(UICollectionView *)collectionView
layout:(UICollectionViewLayout *)collectionViewLayout
sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
CGRect screenRect = [[UIScreen mainScreen] bounds];
CGFloat screenWidth = screenRect.size.width;
float cellWidth = screenWidth / 2.0; //Replace the divisor with the column count requirement. Make sure to have it in float.
CGFloat screenHeight = screenRect.size.height;
screenHeight = screenHeight - 114.0; // Sum of Bottom View & Top View Height
float cellHeight = screenHeight /(totalArray.count/2); //totalArray contains item used to show in collectionview
if(DEFAULT_CELL_HEIGHT > cellHeight){
cellHeight=DEFAULT_CELL_HEIGHT;
}
CGSize size = CGSizeMake(cellWidth, cellHeight);
return size;
}
答案 2 :(得分:0)
@Hauzin的答案很好,可以摆脱不同设备的间距。对于单元格之间的间距( minimumInteritemSpacingForSectionAt ),您是否使视图控制器符合此协议( UICollectionViewDelegateFlowLayout )?