我尝试了以下代码,从collectionview中找出最后一条可见索引路径,但可见单元格不断变化,我无法找到最后一个可见项目。
for cell: UICollectionViewCell in collView.visibleCells {
// indexPath = collView.indexPathForCell(cell)!
var visibleRect = CGRect()
visibleRect.origin = collView.contentOffset
visibleRect.size = collView.bounds.size
let visiblePoint = CGPoint(x: visibleRect.width, y: visibleRect.height)
if let indexPath = collView.indexPathForItem(at: visiblePoint) //If let is
{
return indexPath
} else {
return IndexPath(row: NSNotFound, section: 0)
}
}
输出
"<NSIndexPath: 0x17422c680> {length = 2, path = 0 - 4}",
"<NSIndexPath: 0x17403e0c0> {length = 2, path = 0 - 6}",
"<NSIndexPath: 0x1742261c0> {length = 2, path = 0 - 10}",
"<NSIndexPath: 0x17422adc0> {length = 2, path = 0 - 1}",
"<NSIndexPath: 0x1742205e0> {length = 2, path = 0 - 3}",
"<NSIndexPath: 0x17422a1a0> {length = 2, path = 0 - 7}",
"<NSIndexPath: 0x174227080> {length = 2, path = 0 - 9}",
"<NSIndexPath: 0x174229b40> {length = 2, path = 0 - 0}"
答案 0 :(得分:1)
您可以使用indexPathsForVisibleItems
获取UICollectionView
中可见项的indexPath数组。
var indexPathsForVisibleItems: [IndexPath] { get }
此属性的值是一个未排序的IndexPath对象数组, 每个对应于集合视图中的可见单元格。 此数组不包含当前的任何补充视图 可见。如果没有可见项,则此属性的值为 一个空数组。
就像您指定的照片应用中一样,您将在数组中获得多个IndexPath
元素,因为在特定时刻可以看到多个元素。
另外,我不明白最后一个可见索引是什么意思。如果有任何进一步的帮助,请更清楚。
修改:
示例:强> 我创建了一个UICollectionView,其中包含 30个单元格和1个。 对于以下屏幕:
我使用了以下代码行:
let arrayOfVisibleItems = collectionView.indexPathsForVisibleItems.sorted()
let lastIndexPath = arrayOfVisibleItems.last
print("Array: ", arrayOfVisibleItems)
print("Last IndexPath: ", lastIndexPath)
<强>输出:强>
Array: [[0, 0], [0, 1], [0, 2], [0, 3], [0, 4], [0, 5], [0, 6], [0, 7], [0, 8], [0, 9], [0, 10], [0, 11], [0, 12], [0, 13], [0, 14], [0, 15], [0, 16], [0, 17], [0, 18], [0, 19], [0, 20]]
Last IndexPath: Optional([0, 20])