最后一个单元格的UICollectionView布局

10

我有一个UICollectionView,其中包含一个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和custom layout的选择仍然感到困惑。这方面有什么原则吗?

非常感谢。


2
UICollectionView 总是尝试填充每一行中适合的尽可能多的项目。您可以在您的示例中看到:在图像1中,每行有3个项目的空间,但在图像2中,只有一个图像的空间。现在最后一行的问题是,UICollectionView 不知道是否会有另一个项目出现,因此它会对齐到侧面并等待下一个元素。这是自动布局的问题,视图会自动对齐而不是使用布局委托。(也许这可以帮助某人解决这个问题,因为它似乎仍然没有解决) - choli
1个回答

5
我遇到了一个类似的问题,即集合视图中的最后几个单元格有一个不美观的偏移量。在我的情况下,这是由于未考虑节的插图与项大小的关系所致。
尝试将flowLayout的sectionInset设置为0:
flowLayout.sectionInset = UIEdgeInsetsZero;

如果这不起作用,您可能需要强制执行minimumInterItemSpacing,因为流式布局似乎会在最后几个单元格上出现问题。
flowLayout.minimumInteritemSpacing = 10.f;//or any reasonable number

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接