Ios UICollectionViewFlowLayout最小发光材料间距不小于';行不通

Ios UICollectionViewFlowLayout最小发光材料间距不小于';行不通,ios,objective-c,cocoa-touch,uicollectionview,uicollectionviewlayout,Ios,Objective C,Cocoa Touch,Uicollectionview,Uicollectionviewlayout,我的UICollectionView有两个问题: 最小材料间距不起作用 它在iOS 6上水平溢出 我这样设置布局: UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; layout.itemSize = CGSizeMake(70.0f, 70.0f); layout.scrollDirection = UICollectionViewScrollDirectionVertical;

我的UICollectionView有两个问题:

  • 最小材料间距
    不起作用
  • 它在iOS 6上水平溢出
我这样设置布局:

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上没有溢出,但列之间的间距仍然不是零)


我尝试了此解决方案,但它无法解决我的问题。

来自
minimuminetemspating
属性的文档:

对于水平滚动网格,此值表示同一列中项目之间的最小间距。此间距用于计算一行中可以容纳多少项目,但在确定项目数量后,实际间距可能会向上调整。

“流”布局将在其宽度上均匀地分隔单元格,间距不小于您设置的最小值。如果不需要间距,则需要实现自己的布局

iOS 6溢出问题我不确定。尝试放弃对iOS 6的支持;)

“行距”可以指垂直线之间的间距。 假设您有一个普通的单行水平集合视图

(例如,整个视图仅为50高,项目仅为50x50。)

正如user@matt所解释的那样

  • 水平集合视图具有单元格列

  • 苹果所说的“线”是细胞的垂直“线”(!)

因此:

  • 对于具有一行的简单水平集合视图

  • 苹果命名的“行”间距实际上是项目之间的间距

因此,令人惊讶的是,在一个只有一行的简单水平集合视图中,要设置项目之间的间距,它只是:

l.minimumLineSpacing = 6  // Apple means "vertical scan lines" by "lines"
minimumInteritemSpacing
在一行的普通简单水平集合视图中完全没有意义。)


这最终解释了为什么互联网上有100个页面询问为什么
minimuminetemspating
不起作用。用户@matt提供的精彩提示

您希望看到什么?所有东西都挤到左边了?@jrturton是的。minimumLineSpacing确实可以按预期工作,因此我不认为布局需要更大的项间间距,因为我知道它会占用更多的空间。好吧,请看我的答案。行距是另一回事。我明白你的意思了。谢谢:)Thx,你是对的,我在Xcode快速帮助中看不到这个提示。。。我忘了检查文件。。