Aak*_*ave 5 uiscrollview ios uicollectionview uicollectionviewcell swift
我有一个集合视图,其中单元格的大小与集合视图完全相同,因此每个单元格都应占据整个屏幕。我已经实现了一个功能,当它在滚动中拖动或减速时,单元格会被捕捉到完整的视图。这就是用户体验的工作方式。
https://drive.google.com/open?id=1v8-WxCQUzfu8V_k9zM1UCWsf_-Zz4dpr
我想要的是:
正如您从剪辑中看到的那样,单元格会捕捉到整个屏幕。现在,我想在它捕捉后执行一个方法。在部分显示之前或之前不显示。
以下是我为捕捉效果编写的代码:
func scrollToMostVisibleCell(){
let visibleRect = CGRect(origin: collectionView.contentOffset, size: collectionView.bounds.size)
let visiblePoint = CGPoint(x: visibleRect.midX, y: visibleRect.midY)
let visibleIndexPath = collectionView.indexPathForItem(at: visiblePoint)!
collectionView.scrollToItem(at: visibleIndexPath as IndexPath, at: .top, animated: true)
print("cell is ---> ", visibleIndexPath.row)
}
func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
scrollToMostVisibleCell()
}
func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
scrollToMostVisibleCell()
if !decelerate {
scrollToMostVisibleCell()
}
}
Run Code Online (Sandbox Code Playgroud)
如果我使用willDisplayCell方法,那么只要单元格在视图中,它就会立即返回我,即使它只是在collectionView.
有没有办法可以检查单元格是否完全在视图中,然后我可以执行功能?
我已经在这个问题上报废了互联网,但无法找到满意的答案。
Man*_*esh -1
在对单元格进行任何操作之前,用于followedCollectionView.indexPathsForVisibleItems()获取可见单元格visibleIndexPaths并检查您的单元格是否indexPath包含在其中。visibleIndexPathsRef : @anhtu 检查 indexPath 处的单元格在屏幕 UICollectionView 上是否可见
同样来自苹果:var visibleCells: [UICollectionViewCell] { get }。返回集合视图当前显示的可见单元格数组。
| 归档时间: |
|
| 查看次数: |
8154 次 |
| 最近记录: |