当用户选择collectionView单元格时,我会对该单元格的框架进行动画处理以使其生长和重新定位,以便其坐姿具有以下大小/位置:

CGRectMake(114, 148, 540, 620)


如果我没有向下滚动到collectionView中的其他单元格,则此方法效果很好。当我在较低的单元格上尝试时,它仍会设置动画,但单元格会向上射击,因此collectionView的y坐标可以为148。

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

我要怎么做才能将所选像元的y值转换为超级视图坐标系中的148?

编辑:减少混乱

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

(x=394.5, y=4114)


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

编辑2:PIC

最佳答案

如果我正确理解了您要做什么,那么解决方案很简单:单元格的“ y”位置应为self.collectionView.contentOffset.y + 148

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


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

希望这可以帮助!

10-07 22:40