1

我的问题的快速总结:

我正在使用 iOS 7 中的 View Controller Transitioning API 创建自定义转换,当点击时将 uicollectionview 中的单元格扩展为全屏视图,并在关闭时收缩回原始坐标。

类似于照片应用和 Facebook 所做的。

只要我保持在相同的方向呈现和关闭全屏视图,它在两个方向上都可以很好地工作。

如果我在关闭它之前在全屏视图中更改方向,它会失败。

一些细节:

我正在使用导航控制器从包含 collectionView 的 View1 到作为全屏视图的 View2。

View1 实现了 UINavigationControllerDelegate 协议,并且在 navigationController:animationControllerForOperation:fromViewController:toViewController: 方法中,我计算了当操作是“Push”时动画必须开始的坐标,同样,当操作时动画必须完成的坐标在返回执行动画的 UIViewControllerAnimatedTransitioning 类之前是一个“Pop”。

我通过以下方式计算 View1 坐标系中的开始和结束帧:

我检索选定的单元格:

        PhotoCell *cell = (PhotoCell *) [self.collectionView cellForItemAtIndexPath:selectedIndexPath];

我通过以下方式将单元格的框架转换为 View1 的坐标系:

self.originatingFrame = [cell.contentView.superView convertRect:cell.contentView.frame toView:self.view];

当保持 Push 和 Pop 操作之间的旋转恒定时,此计算两次返回相同的坐标,结果是预期的结果。动画从单元格的帧开始,然后收缩到同一个单元格。

然而; 在 Push 和 Pop 操作之间旋转设备时,我得到不正确的结果。Pop 期间计算的坐标与 Push 期间完全相同。好像 View1 和 collectionView 还没有旋转。因此,如果设备没有旋转,动画将在单元格所在的位置结束。

如何计算所选单元格的坐标以说明 Pop 操作期间的旋转变化?

谢谢

4

0 回答 0