在scrollToItemAtIndexPath之后获取UICollectionView单元格位置

时间:2014-05-11 15:02:33

标签: ios uikit uicollectionview

我希望在以编程方式滚动到单元格之后获得UICollectionViewCell的位置。我这样设置滚动位置。

[self.collectionView scrollToItemAtIndexPath:indexPath
                             atScrollPosition:UICollectionViewScrollPositionCenteredVertically
                                        animated:NO];

然后我想得到我滚动到的单元格的框架,因为我需要在它附近放置另一个UIView

此代码返回带有scrollview的单元格的rect,但我需要在可见rect中的位置。

UICollectionViewLayoutAttributes *attributes = [self.collectionView layoutAttributesForItemAtIndexPath:indexPath];
CGRect cellRect = attributes.frame;

2 个答案:

答案 0 :(得分:5)

单元格的框架不会改变,它是封闭滚动视图的内容偏移量。从帧的原点中减去contentOffset以获取屏幕上的位置,或使用convertRect:方法之一获取相关视图中的坐标。

答案 1 :(得分:0)

这是单元格X和中心值

UICollectionViewLayoutAttributes *attributes = [collectionView layoutAttributesForItemAtIndexPath:indexPath];
CGPoint cellCenterPoint = attributes.center;
CGPoint contentOffset = [collectionView contentOffset];
NSLog(@"%f  , %f",-1*contentOffset.x , cellCenterPoint.x);
int  relativeCellCenter = (-1*contentOffset.x) + cellCenterPoint.x +collectionView.frame.origin.x;
int relativeX = (-1*contentOffset.x) +collectionView.frame.origin.x;