gpt4 book ai didi

ios - 启用分页时如何扩展UICollectionView contentSize?

转载 作者:IT王子 更新时间:2023-10-29 07:52:48 27 4
gpt4 key购买 nike

我正在制作一个启用了分页机制的简单 UICollectionView,一切正常。但是,当滚动到最后一页时,单元格的数量在屏幕上并不完全可见,最后一页包含前一页的一些单元格。

如何扩展 UICollectionViewcontentSize 以使最后一页不包含上一页的任何单元格?

一个例子 here : UICollectionView 水平滚动 6 个单元格,这样:

  • 第 1 页:

    cell0 - cell1 - cell2 - cell3

  • 第 2 页:

    cell4 - cell5 是预期的,但出乎意料

    cell2 - cell3 - cell4 - cell5

怎么改?

总结:

我要设置

collectionView.contentSize = numberOfPage * collectionView.frame

collectionView.contentSize = numberOfCell * (cellFrame + spacing)

最佳答案

您需要继承 UICollectionViewLayout 并覆盖 collectionViewContentSize 方法。我将 UICollectionViewFlowLayout 子类化,这样我就不必重写所有布局代码。

我正在构建一个 4x4 网格,所以我的方法如下所示:

- (CGSize)collectionViewContentSize
{
NSInteger itemCount = [self.collectionView numberOfItemsInSection:0];
NSInteger pages = ceil(itemCount / 16.0);

return CGSizeMake(320 * pages, self.collectionView.frame.size.height);
}

旁注,当您使用自定义布局时,您将无法在 Interface Builder 中设置某些显示属性。您可以在自定义 UICollectionViewLayout 子类的 init 方法中以编程方式设置它们。这是我的供引用:

- (id)init
{
self = [super init];
if (self) {
[self setup];
}

return self;
}

- (id)initWithCoder:(NSCoder *)aDecoder
{
self = [super init];
if (self) {
[self setup];
}

return self;
}

- (void)setup
{
self.itemSize = CGSizeMake(65.0f, 65.0f);
self.minimumLineSpacing = 15;
self.sectionInset = UIEdgeInsetsMake(7.5f, 7.5f, 30.0f, 7.5f);
[self setScrollDirection:UICollectionViewScrollDirectionHorizontal];
}

关于ios - 启用分页时如何扩展UICollectionView contentSize?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14852004/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com