苦苦于将单元索引路径放在collectionview的中心

时间:2015-11-01 11:22:25

标签: swift uicollectionview uicollectionviewcell

我正在尝试使用扩展名

获取集合视图中单元格的索引路径

扩展程序中的代码

extension InfiniteCollectionView
{

    var centerPoint : CGPoint {
        get {
            return CGPoint(x: self.contentOffset.x + (CGRectGetWidth(self.bounds) * 0.5) , y: self.contentOffset.y + (CGRectGetWidth(self.bounds) * 0.5))
        }
    }

    var centerCellIndexPath: NSIndexPath?{

            return self.indexPathForItemAtPoint(self.centerPoint)
    }
}

所以我可以得到像这样的中心索引路径

print(collectionVw.centerCellIndexPath)

但这仍然在返回nil,我似乎无法弄清楚为什么,值得注意的是扩展名在 InfiniteCollectionView 的类中,它被设置为collectionview上的自定义类而不是视图控制器。

1 个答案:

答案 0 :(得分:0)

“如果在指定点找不到项目,则indexPathForItemAtPoint将返回nil”,您对中心点的计算可以返回空间中的一个点,因此请使用indexPathsForVisibleItems。 该文档还建议使用layoutAttributesForItemAtIndexPath: “使用此方法检索特定项目的布局信息。您应始终使用此方法,而不是直接查询布局对象。”