我希望在以编程方式滚动到单元格之后获得UICollectionViewCell
的位置。我这样设置滚动位置。
[self.collectionView scrollToItemAtIndexPath:indexPath
atScrollPosition:UICollectionViewScrollPositionCenteredVertically
animated:NO];
然后我想得到我滚动到的单元格的框架,因为我需要在它附近放置另一个UIView
。
此代码返回带有scrollview的单元格的rect,但我需要在可见rect中的位置。
UICollectionViewLayoutAttributes *attributes = [self.collectionView layoutAttributesForItemAtIndexPath:indexPath];
CGRect cellRect = attributes.frame;
答案 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;