UICollectionView 没有完全填满页面,当它们应该在一个页面上时,如何阻止它将项目推送到下一页?

Posted

技术标签:

【中文标题】UICollectionView 没有完全填满页面,当它们应该在一个页面上时,如何阻止它将项目推送到下一页?【英文标题】:UICollectionView doesn't fill up page entirely, how do I stop it from pushing items to the next page when they should be on one? 【发布时间】:2014-06-12 08:27:19 【问题描述】:

我正在尝试水平设置 UICollectionView 页面,因此我需要将其垂直布局。但是,我的集合视图具有不同的网格结构;顶行有一个项目,而底行(有两行)有三个项目。

这种结构似乎不适用于垂直布局。似乎它先布局顶部图像,然后在底部放置第一个图像,然后返回顶部,看到没有更多空间,然后将下一个项目放在下一页上。无论出于何种原因,它都不会填满页面的其余部分,即使还有垂直空间(实际上还剩下两个空间),它也会跳转到下一页。

显然这根本不理想。有没有办法通过集合视图来阻止这种行为,并真正让它填满可用区域?

【问题讨论】:

【参考方案1】:

所以你的第一个项目与屏幕一样宽,接下来的三个各占屏幕的三分之一?

似乎第三个项目的宽度不是问题,因为您有足够的空间容纳另外两个项目,但是高度呢?如果需要,请确保将以下方法设置为 0 间距(假设您的项目之间没有间距):

-(UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section

    return UIEdgeInsetsZero;


-(CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section

    return 0.0f;


-(CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section

    return 0.0f;

【讨论】:

你的第一句话是正确的。其他人的高度很好,因为它们都与底行的第一个高度相同,这显示得很好。是的,这些方法都返回零。 你弄明白了吗?尝试将单元格和图像视图的 clipToBounds 设置为 YES。如果不是这样,请尝试没有图像的集合视图,只有背景颜色? 两者都做了,没有运气。编写自定义布局。 :// 您没有在单元格视图或集合视图中使用任何滚动视图,是吗?您需要添加 self.automaticallyAdjustsScrollViewInsets = NO;如果你是你的视图控制器。否则,这简直是荒谬的。

以上是关于UICollectionView 没有完全填满页面,当它们应该在一个页面上时,如何阻止它将项目推送到下一页?的主要内容,如果未能解决你的问题,请参考以下文章

UICollectionView 中的大单元格在仍显示的情况下被删除

如何使场景完全伸展到宽度。附上我的 Xcode 模拟器的屏幕截图,它没有填满屏幕

如何制作一个完全填满所有屏幕的着陆滑块?

身体高度没有填满页面[重复]

如何在 UICollectionView 上设置单元格的位置

当我尝试使用 MessagingCenter 从另一个页面填充它来通信两个类时,ListView 没有填满