有没有办法自动滚动到UICollectionView的底部

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有没有办法自动滚动到UICollectionView的底部相关的知识,希望对你有一定的参考价值。

所以我目前正在开发一个项目,它有一个按钮,可以将单元格添加到UICollectionView,然后需要自动滚动到最后一个单元格(即UICollectionView的底部)。

我找到了方法scrollToItemAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UICollectionViewScrollPosition)scrollPosition animated:(BOOL)animated

但现在我陷入困境,试图找到CollectionView中最后一个对象的indexPath

问题似乎在于我一直试图将UICollectionView中的单元格视为一个数组(不能通过它们枚举,不响应lastObject等)。我可以得到的最接近的是方法visibleItems,它确实给了我一个数组但是当我需要在可见帧之外添加的单元格时没有帮助。

有没有办法在CollectionView中获取最后一个对象的IndexPath?

答案

你可以问你的数据来源:

NSInteger section = [self numberOfSectionsInCollectionView:self.collectionView] - 1;
NSInteger item = [self collectionView:self.collectionView numberOfItemsInSection:section] - 1;
NSIndexPath *lastIndexPath = [NSIndexPath indexPathForItem:item inSection:section];
另一答案

这是你的答案......如果你不想问数据源。

viewDidAppear:方法中添加它。

NSInteger section = [_collectionView numberOfSections] - 1 ;
NSInteger item = [_collectionView numberOfItemsInSection:section] - 1 ;
NSIndexPath *lastIndexPath = [NSIndexPath indexPathForItem:item inSection:section] ;
[_collectionView scrollToItemAtIndexPath:lastIndexPath atScrollPosition:(UICollectionViewScrollPositionBottom) animated:YES];
另一答案

Swift 3和4,假设你只有一个部分:

func scrollToBottom() {
    let section = 0
    let item = collectionView.numberOfItems(inSection: section) - 1
    let lastIndexPath = IndexPath(item: item, section: section)
    collectionView.scrollToItem(at: lastIndexPath, at: .bottom, animated: false)
}
另一答案

我会首先检查是否可以选择滚动到底部,以防万一您的数据出现问题并且您的表/集合视图没有行。

func scrollToBottomIfPossible() {

    guard self.myRows.count > 0 else {
            return
    }

    self.collectionView.scrollToItem(at: IndexPath(row: yourItems.count - 1, section: mySections.count), at: .bottom, animated: true)
}
另一答案

我有一个问题,我可以滚动到集合视图中的最后一项,但无法滚动到页脚的底部。

以下代码修复了该问题:

let bottomOffset = CGPoint(x: 0, 
                           y: collectionView.frame.height + (collectionView.contentSize.height * CGFloat(itemsInCollectionView.count)))
collectionView.setContentOffset(bottomOffset, animated: false)

以上是关于有没有办法自动滚动到UICollectionView的底部的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法防止 Xamarin Forms 滚动视图在打开选择器控件时自动滚动到最后编辑的条目?

我想为图像创建一个 CollectionView 像循环一样自动滚动

有没有办法防止 ScrollView 在 TextView 获得焦点时自动滚动?

有没有办法在结合页面控制的滚动视图中自动布局图像?

AJAX 聊天,自动滚动窗口

如何在颤动中自动滚动文本?