UICollectionViewFlowLayout minimumInteritemSpacing无效

问题描述 投票:7回答:2

我的UICollectionView有两个问题:

  • minimumInteritemSpacing无效
  • 它在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上没有溢出,但是列之间的间隔仍然不为零)

“在此处输入图像描述”

我尝试过此解决方案https://gist.github.com/OliverLetterer/5583087,但在我的情况下并不能解决任何问题。

ios objective-c cocoa-touch uicollectionview uicollectionviewlayout
2个回答
16
投票

对于水平滚动网格,此值表示同一列中项目之间的最小间距。此间距用于计算一行中可以容纳多少个项目,但是确定项目数后,

实际间距可能会向上调整。

流布局将在单元的整个宽度上均匀间隔单元,间隔小于设置的最小间隔[[不小于。如果您不希望有间距,则需要实现自己的布局。

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

0
投票
假设您有一个普通的单行水平收集视图。

(例如,整个视图的高度仅为50,而项目的宽度仅为50x50。)正如@matt用户所解释的

水平收集视图具有单元格列

  • “线”是苹果的意思,

  • 是单元格的垂直“线”
] >>

因此:

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

  • Apple用什么来命名“行”间距-确实是-间距

  • 在项目之间>>
  • ] >>

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

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

这最终解释了为什么互联网上有100页询问为什么minimumInteritemSpacing无效。用户@matt的精彩提示

© www.soinside.com 2019 - 2024. All rights reserved.