有啥方法可以知道哪个集合视图单元位于特定点?

Posted

技术标签:

【中文标题】有啥方法可以知道哪个集合视图单元位于特定点?【英文标题】:Is there any way to know which collection view cell is at a specific point?有什么方法可以知道哪个集合视图单元位于特定点? 【发布时间】:2012-11-15 19:16:29 【问题描述】:

我有一个 CGPoint,我想知道我的集合视图中的哪个单元格当前包含该点。有什么简单的方法可以做到这一点还是我必须编写自己的方法?

【问题讨论】:

【参考方案1】:

UICollectionViews 我用的不多,但是有一个方法看起来很完美:

- (NSIndexPath *)indexPathForItemAtPoint:(CGPoint)point;

传递给方法的点必须在集合视图的坐标系内。你可以这样做:

CGPoint convertedPoint = [collectionView convertPoint:point fromView:viewThatYouGotThePointFrom];

获取正确的点,如果你得到的点不是来自集合视图。

【讨论】:

【参考方案2】:
//due to the point passed in possibly not containing a cell IndexPath is an optional

func indexPathForCellAtPoint(_ point : CGPoint) -> IndexPath? 
                   return collectionView?.indexPathForItem(at: self.view.convert(point, to: collectionView!))



override func scrollViewDidScroll(_ scrollView: UIScrollView) 
   let topLeftCell = CGPoint(x: 1, y: 60)
       if let indexPath = indexPathForCellAtPoint(topLeftCell) 
                    print(indexPath.section,indexPath.row)
         

【讨论】:

以上是关于有啥方法可以知道哪个集合视图单元位于特定点?的主要内容,如果未能解决你的问题,请参考以下文章

如何从位于集合视图单元格内的步进器中获取选定的 IndexPath?

查找哪个集合视图单元格链接到我的表格视图

如何将集合视图单元格滚动到可见区域的中间

我想通过单击解析 Json 的集合视图单元格来获取特定数据

在表格视图单元格内设置集合视图约束的正确方法

重新加载并滚动到特定的集合视图单元格