諸事情でUICollectionViewCellの画面上の位置が取得する必要があったので, やり方を調べてみました.
取得するには, UICollectionViewをスクロールした際のオフセットと, UICollectionViewからのCellの位置の差を取ればいいので, 以下のような感じで取得してあげます.
extension UICollectionView{
func nowPosition(cell: UICollectionViewCell) -> CGRect{
let point = CGPoint(x: cell.frame.origin.x - self.contentOffset.x, y: cell.frame.origin.y - self.contentOffset.y)
let size = cell.bounds.size
return CGRect(x: point.x, y: point.y, width: size.width, height: size.height)
}
}
使い方としては, UICollectionViewの拡張メソッドとして定義したので, こんな感じで使ってあげてください.
let cell: UICollectionViewCell = collectionView.cellForItem(at: indexPath)!
print(self.MainCollection.nowPosition(cell: cell))
カスタムセルを使用している場合は, 以下のようにキャストして使います.
let cell: UICollectionViewCell = collectionView.cellForItem(at: indexPath) as! MainCollectionCell
print(self.MainCollection.nowPosition(cell: cell))