【问题标题】:UICollectionView layout of last cell最后一个单元格的 UICollectionView 布局
【发布时间】:2014-07-21 08:33:10
【问题描述】:

我有一个集合视图,它有一个 UICollectionViewFlowLayout 我在里面放了10个项目。它们有不同的尺寸:

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {

if (indexPath.row<6) {
    CGSize retval =  CGSizeMake(100, 100);
    return retval;
}

CGSize retval =  CGSizeMake(200, 130);

return retval;
}

它的布局如下: 前 6 个单元格看起来不错,7-9 个是正确的,但最后一个单元格没有居中对齐,

谁能给我解释一下?

最近我在玩集合布局,但仍然对选择感到困惑 flowlayout 和自定义布局。有什么原则吗?

提前很多。

【问题讨论】:

  • UICollectionView 总是尝试填充行中的尽可能多的项目。您可以在示例中看到:在图像 1 中,每行有 3 个项目的空间,但在图像 2 中,只有一个图像的空间。现在最后一行的问题是,UICollectionView 不知道另一个项目是否会在那里,所以它对齐到一边并等待下一个元素。这是 autoLayout 的问题,视图会​​自动对齐,而不是与布局委托对齐。 (也许这有助于某人解决这个问题,因为它似乎仍然是开放的)

标签: uicollectionview flowlayout


【解决方案1】:

我遇到了一个类似的问题,集合视图中的最后几个单元格有一个难看的偏移量。在我的情况下,这是由于不遵守与项目大小相关的部分插图。

尝试将flowLayout的sectionInset设置为0:

flowLayout.sectionInset = UIEdgeInsetsZero;

如果这不起作用,您可能需要强制执行 minimumInterItemSpacing,因为流布局似乎在最后几个单元格上搞砸了:

flowLayout.minimumInteritemSpacing = 10.f;//or any reasonable number

【讨论】: