0

当用户选择一个 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:图片

在此处输入图像描述

4

1 回答 1

2

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

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

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

希望这可以帮助!

于 2013-10-09T17:37:50.867 回答