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中是否可见?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)