具有自定义单元格框架的 indexPathForItemAtPoint
indexPathForItemAtPoint with custom cell frame
我正在创建集合视图。我在 CollectionViewController 中更改单元格的大小和位置:
override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath
indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(
reuseIdentifier, forIndexPath: indexPath) as! MyCollectionViewCell
然后为每个单独的项目更改 cell.frame
cell.frame = CGRectMake(x , y, width, height)
一切正常,但在使用手势识别器时,我想使用 collectionView.indexPathForItemAtPoint()
识别单元格。
collectionView.indexPathForItemAtPoint()
,无法识别我对单元格大小和位置所做的更改,并且 returns 为零。它仅在我从(不可见的)原始位置拖动时有效。我找到了包括手动遍历所有单元格的解决方案,但我仍然想知道是否有可能以 collectionView.indexPathForItemAtPoint()
能够识别的方式更改单元格的位置和大小。
您看到这个的原因是 UICollectionView
没有使用实际的视图层次结构来回答您提出的问题。 UICollectionView
有一个布局对象,恰当地命名为 UICollectionViewLayout
。默认布局对象是 UICollectionViewFlowLayout
。当您在某个点请求单元格时,它会使用布局对象提供的信息。
重要的一点是:如果您想以不同于 Flow Layout 的方式放置单元格,则需要子class 它或基础 class 并实现您自己的布局方法。或者,您可以获得与您的更改同步的默认流布局对象。我不确定。
这不是微不足道的,而且我没有一个简单的开箱即用的解决方案来满足您的需求。你必须仔细研究它并在进行时提出具体问题。 Here 是子class 流式布局允许重新排序的示例,这可能对您有所帮助。
我正在创建集合视图。我在 CollectionViewController 中更改单元格的大小和位置:
override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath
indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(
reuseIdentifier, forIndexPath: indexPath) as! MyCollectionViewCell
然后为每个单独的项目更改 cell.frame
cell.frame = CGRectMake(x , y, width, height)
一切正常,但在使用手势识别器时,我想使用 collectionView.indexPathForItemAtPoint()
识别单元格。
collectionView.indexPathForItemAtPoint()
,无法识别我对单元格大小和位置所做的更改,并且 returns 为零。它仅在我从(不可见的)原始位置拖动时有效。我找到了包括手动遍历所有单元格的解决方案,但我仍然想知道是否有可能以 collectionView.indexPathForItemAtPoint()
能够识别的方式更改单元格的位置和大小。
您看到这个的原因是 UICollectionView
没有使用实际的视图层次结构来回答您提出的问题。 UICollectionView
有一个布局对象,恰当地命名为 UICollectionViewLayout
。默认布局对象是 UICollectionViewFlowLayout
。当您在某个点请求单元格时,它会使用布局对象提供的信息。
重要的一点是:如果您想以不同于 Flow Layout 的方式放置单元格,则需要子class 它或基础 class 并实现您自己的布局方法。或者,您可以获得与您的更改同步的默认流布局对象。我不确定。
这不是微不足道的,而且我没有一个简单的开箱即用的解决方案来满足您的需求。你必须仔细研究它并在进行时提出具体问题。 Here 是子class 流式布局允许重新排序的示例,这可能对您有所帮助。