UICollectionView,UICollectionViewFlowLayout:不同的单元格宽度和相同的单元格之间定义的间距
Posted
技术标签:
【中文标题】UICollectionView,UICollectionViewFlowLayout:不同的单元格宽度和相同的单元格之间定义的间距【英文标题】:UICollectionView, UICollectionViewFlowLayout: different cells width and same defined spacing between cells 【发布时间】:2013-05-21 20:50:34 【问题描述】:我重载了UICollectionViewFlowLayout
,使其在每个UICollectionViewCell
中都有一个包含UIImages
的水平行滑块。
在重载的UICollectionViewFlowLayout
中,我将minimumLineSpacing
设置为0,以使UICollectionViewCells
之间没有间距。 (默认为 10 像素)
如果每个单元格的宽度相同,0px的间距会正确显示
如果单元格的宽度更大,则不再考虑 0px,并应用单元格之间的默认 10px..
我尝试实现以下方法但结果相同...
- (CGFloat)collectionView:(UICollectionView *)collectionView
layout:(UICollectionViewLayout*)collectionViewLayout
minimumLineSpacingForSectionAtIndex:(NSInteger)section
return 0.0;
这是一个错误吗?
在不同宽度的UICollectionViewCells
之间获得 0px 间距的“技巧”是什么?
【问题讨论】:
【参考方案1】:这是一个错误吗? 没有
这不是错误,它是UICollectionViewFlowLayout
的默认行为。流式布局是一种换行布局,这意味着它会将所有单元格沿一条直线放置并在屏幕上排列。一旦它填满一行(没有新项目的空间),它将打破这一行并进入下一个。 UICollectionViewFlowLayout
保证 minimumLineSpacing 不准确。如果您的项目大小不同,则流程布局以保持最小行距的方式排列单元格。所以线的大小可能会增加,但绝不会低于您之前设置的值。
我认为流式布局不可能,您应该使用一种自定义布局。检查this我不确定是否可以将间距设置为零试试JSPrintDemo
【讨论】:
我花了几个小时试图让 UICollectionViewFlowLayout 与我合作,最后我放弃并制作了自己的 UICollectionViewLayout,主要使用这里的教程:skeuo.com/uicollectionview-custom-layout-tutorial ...但是,我也需要可变宽度的单元格,我不知道如何做到这一点。您链接中的代码帮助我解决了这个问题,特别是在这里:github.com/jayslu/JSPintDemo/blob/master/JSPintDemo/…以上是关于UICollectionView,UICollectionViewFlowLayout:不同的单元格宽度和相同的单元格之间定义的间距的主要内容,如果未能解决你的问题,请参考以下文章