swift – 如何检测最后一个单元格在UICollectionView中是否可见?

swift – 如何检测最后一个单元格在UICollectionView中是否可见?,第1张

概述我试图检测collectionView中的最后一个单元格是否可见. var isLastCellVisible: Bool { let lastIndexPath = NSIndexPath(forItem: self.messages.count - 1, inSection: 0) let visibleIndexPaths = self.collectionView.ind 我试图检测collectionVIEw中的最后一个单元格是否可见.
var isLastCellVisible: Bool {    let lastIndexPath = NSIndexPath(forItem: self.messages.count - 1,inSection: 0)    let visibleIndexPaths = self.collectionVIEw.indexPathsForVisibleItems()    let lastCellpositionY = self.collectionVIEw.layoutAttributesForItemAtIndexPath(lastIndexPath)!.frame.origin.y    let bottomInset = self.collectionVIEw.contentInset.bottom // changes when the keyboard is shown / hIDden    let contentHeight = self.collectionVIEw.contentSize.height    if visibleIndexPaths.contains(lastIndexPath) && (contentHeight - lastCellpositionY) > bottomInset {        return true    } else {        return false    }}

什么有效:

如果最后一个单元格可见并且显示键盘以便单元格不被其隐藏,则上面的代码返回true.如果它是隐藏的,则返回false.

但是,当用户向上滚动并且最后一个单元格位于键盘上方时,我无法弄清楚如何返回true.

当collectionVIEw向上滚动时,lastCellpositionY和contentHeight不会更改.
代替
self.collectionVIEw.bounds.origin.y确实发生了变化,但我不知道如何将lastCellpositionY与它进行比较,因为它们不共享相同的原点而self.collectionVIEw.bounds.origin.y明显小于lastCellpositionY.

我在用什么
overrIDe func collectionVIEw(collectionVIEw: UICollectionVIEw,willdisplayCell cell: UICollectionVIEwCell,forItemAtIndexPath indexPath: NSIndexPath) {        if indexPath.row == dataSource.count - 1 {            // Last cell is visible        }    }
总结

以上是内存溢出为你收集整理的swift – 如何检测最后一个单元格在UICollectionView中是否可见?全部内容,希望文章能够帮你解决swift – 如何检测最后一个单元格在UICollectionView中是否可见?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1089825.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存