我在尝试在集合视图中设置细胞间距时遇到问题。 iPhone 5上的一切看起来都不错,但是当我在6和6上运行它时,单元间距会急剧增加。我将最小间距设置为10,但似乎没有帮助。第一张图片是我试图在所有设备上实现的。之后的图片是我实际得到的:
这是我在IB中设置的图片:
答案 0 :(得分:3)
根据您的问题,听起来您的意思是设置minimumInteritemSpacing
(在同一行中的项目之间使用的最小间距)。
无论哪种方式,最小间距是您接受的最小间距,而不是您想要的精确间距。 100的空格仍然有效,因为它大于10的最小值。
真正的问题是单元格大小,您已将其固定为150x200。如果您希望单元格调整其宽度,则需要根据视图宽度计算流布局的itemSize
。
如果您的所有单元格大小相同,则可以设置流程布局的itemSize
属性:
#define kCellsPerRow 2
UICollectionViewFlowLayout *flowLayout = (UICollectionViewFlowLayout*)self.collectionView.collectionViewLayout;
CGFloat availableWidthForCells = CGRectGetWidth(self.collectionView.frame) - flowLayout.sectionInset.left - flowLayout.sectionInset.right - flowLayout.minimumInteritemSpacing * (kCellsPerRow - 1);
CGFloat cellWidth = availableWidthForCells / kCellsPerRow;
flowLayout.itemSize = CGSizeMake(cellWidth, flowLayout.itemSize.height);
如果您需要计算每个单元格的尺寸,您可以在collectionView:layout:sizeForItemAtIndexPath:
代表中执行此操作。
在设备方向更改时重新计算itemSize并更新布局:
重绘不带动画的布局:
[self.collectionView.collectionViewLayout invalidateLayout]
动画布局更改:
[self.collectionView performBatchUpdates:nil completion:nil]