Is it possible to translate a UICollectionViewCell\'s
coordinates from being relative to the UICollectionView
to being relative to the superview<
If I understand you correctly, I think the problem is that you first have to correct for the scroll view's contentOffset
, which is easy to do since UICollectionView
is a subclass of UIScrollView
.
CGRect frame = CGRectMake(0.0,
0.0,
cell.frame.size.width,
cell.frame.size.height);
CGPoint correctedOffset =
CGPointMake(cell.frame.origin.x - collectionView.contentOffset.x,
cell.frame.origin.y - collectionView.contentOffset.y);
frame.origin = [cell convertPoint:correctedOffset toView:self.view];
I tested this in one of my UICollectionView
demo apps and it seems to work. Give it a try.
Just in case if anybody looking for this, here is how it can be done in Swift:
let cellFrameInSuperview = collectionView.convertRect(collectionView.cellForItemAtIndexPath(indexPath)!.frame, toView: view)
This answer is very late, but hopefully it will help someone. Dan, you have the right idea, but it is even easier that what you have. Just replace
CGRect frame = CGRectMake(0.0, 0.0, cell.frame.size.width, cell.frame.size.height);
frame.origin = [cell convertPoint:cell.frame.origin toView:self.view];
with
CGRect frame = [collectionView convertRect:cell.frame toView:self.view];
The problem was that you were calling the convert method on the cell, not the collectionView.