我在尝试在集合视图中设置单元格间距时遇到问题。在iPhone 5上一切看起来不错,但是当我在6和6上运行时,单元格间距急剧增加。我将最小间距设置为10,但似乎没有帮助。第一个图像是我试图在所有设备上实现的。之后,下面的图片是什么,我真的开始:如何设置动态UICollectionViewCell间距
这里是我的设置在IB图片:基于
我在尝试在集合视图中设置单元格间距时遇到问题。在iPhone 5上一切看起来不错,但是当我在6和6上运行时,单元格间距急剧增加。我将最小间距设置为10,但似乎没有帮助。第一个图像是我试图在所有设备上实现的。之后,下面的图片是什么,我真的开始:如何设置动态UICollectionViewCell间距
这里是我的设置在IB图片:基于
你的问题,这听起来像你打算设置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]
如果我使用itemSze属性会是这样和我一样在小区设置一个固定的宽度?我在我的视图中实现了itemSize属性,但是得到了相同的结果。不知道我是否正确遵循。 – 2014-11-03 19:02:32
感谢您的帮助,将在几个测试。 – 2014-11-03 20:24:32
谢谢你的工作! – 2014-11-04 03:10:54