【问题标题】:Convert origin of UICollectionViewCell to ViewController's frame将 UICollectionViewCell 的原点转换为 ViewController 的框架
【发布时间】:2013-10-09 16:46:01
【问题描述】:

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

【问题讨论】:

  • 你在哪里设置框架单元格?
  • “didSelectItemAtIndexPath”内部
  • 并且每次滚动时都会调用 didSelectItemAtIndexPath?
  • 是的,但是由于 collectionView 已经滚动,单元格的 y 坐标就像 4300。设置为 148 会导致它一直到顶部。

标签: iphone ios animation frame uicollectionview


【解决方案1】:

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

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

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

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2014-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-19
    • 2019-04-26
    • 1970-01-01
    相关资源
    最近更新 更多