将UICollectionViewCell的原点转换为ViewController的框架

时间:2013-10-09 16:46:02

标签: iphone ios animation frame uicollectionview

当用户选择一个collectionView单元格时,我会为该单元格的框架设置动画以进行增长和重新定位,以便它坐在这个大小/位置:

CGRectMake(114, 148, 540, 620)

如果我没有向下滚动到collectionView中的其他单元格,这很有效。当我在较低的单元格上尝试此操作时,它仍然会动画,但是单元格会向上拍摄,因此对于collectionView,它的y坐标可以为148。

我尝试了各种convertRect和convertPoint的变体,但我无法概念化正确的解决方案。

我需要做什么才能将所选单元格的y值转换为superview坐标系中相当于148的值?

编辑:减少混淆

我点击了我的collectionView底部的一个单元格(意思是我向下滚动了几行),这就是原点:

(x=394.5, y=4114)

这里的x很好,但我对y有问题。我想为我刚刚选择的单元格设置动画,使其看起来好像它的y坐标位于外部视图的148处。就像表单模态视图控制器一样。但是将该原点设置为148会导致单元格飞到collectionView的顶部,因为它在4114处一直向下。如何向用户获取看起来像148的正确y值,但实际上将是更接近细胞的原始来源?

编辑2:PIC

enter image description here

1 个答案:

答案 0 :(得分:2)

如果我理解你想做什么,那么解决方案很简单:你的单元格的“y”位置应该是self.collectionView.contentOffset.y + 148

CGRectMake(114, self.collectionView.contentOffset.y + 148, 540, 620);

这适用于任何给定的滚动值。

希望这有帮助!