我的UICollectionView遇到两个问题:
minimumInteritemSpacing
不起作用我设置了这样的布局:
UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
layout.itemSize = CGSizeMake(70.0f, 70.0f);
layout.scrollDirection = UICollectionViewScrollDirectionVertical;
layout.minimumLineSpacing = 0.0f;
layout.minimumInteritemSpacing = 0.0f;
_collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout];
// I set the size of _collectionView in layoutSubviews:
// _collectionView.frame = self.bounds;
_collectionView.contentInset = UIEdgeInsetsMake(8.0f, 8.0f, 8.0f, 8.0f);
图像显示iOS 6上的结果(在iOS 7上没有溢出,但列之间的间距仍不为零)
我尝试了这个解决方案https://gist.github.com/OliverLetterer/5583087,但它并没有解决我的问题。
答案 0 :(得分:14)
来自minimumInterItemSpacing
属性的文档:
对于水平滚动网格,此值表示同一列中项目之间的最小间距。此间距用于计算单行中可以容纳的项目数,但在确定项目数后,实际间距可能会向上调整。
流动布局将在整个宽度上均匀地间隔单元格,间距不小于,而不是您设置的最小值。如果您不想要间距,则需要实现自己的布局。
iOS 6溢出问题我不确定。尝试放弃对iOS 6的支持;)
答案 1 :(得分:5)
假设您有一个普通的单行水平集合视图。
(例如,整个视图的高度仅为50,而项目的宽度仅为50x50。)
正如@matt用户所解释的那样
水平收集视图具有单元格列
Apple所说的“线条” 是单元格的垂直“线条”(!)
因此:
对于只有一行的简单水平集合视图,
Apple所说的“行”间距是-实际上-项目之间的间距
因此令人惊讶的是,在一个只有一行的简单水平集合视图中,为了设置项目之间的间隙,它就是:
l.minimumLineSpacing = 6 // Apple means "vertical scan lines" by "lines"
({minimumInteritemSpacing
在只有一行的普通简单水平集合视图中是完全没有意义的。)
这最终解释了为什么互联网上有100个页面询问为什么minimumInteritemSpacing
无效。用户@matt的精彩提示