无法为UIViewControllerAnimatedTransitioning到UIPageViewController获取正确的框架

时间:2018-10-02 11:03:24

标签: swift uikit uiviewanimationtransition

我一直在与这个过渡动画作斗争,我几乎没有想法。我正在尝试类似于在iOS上的“照片”应用程序中从收藏夹转到单个照片的操作。

除了图像的“大”细节视图的框架不正确之外,所有这些都令我满意。这是正确的尺寸,但与最终状态下图像的实际位置相比,它离屏幕顶部大约87点。这个高度与“安全区域”(iPhone X标题+ navItem)上方的高度几乎相同,并且非常接近安全区域下方的高度(工具栏和iPhone X主页区域)。

对于类似的发音问题,我已经用Google搜索(和“ SO”)了很多不同的解决方案。例如:UIViewControllerAnimatedTransitioning with Safe Area Insets on iPhone X

我已经从Github下载并仔细阅读了示例代码。例如:https://github.com/SamStone92/CustomTransitions

在我看来,我的观点(控制器)层次结构中有一些东西比大多数情况复杂得多。对于可能导致问题的原因以及如何解决该问题,我希望提供一些提示。

我的层次结构是:

  • NavigationController包含带有UICollectionView的根VC。
  • 点击一个单元格将切换到UIPageViewController的“详细视图”,在这里我可以在集合中的项目之间进行分页。
  • UIPageViewController除了导航栏之外,还有一个底部工具栏。
  • 内容ViewController具有一个带有UIImageView的ScrollView来进行缩放。

似乎常用的方法是将目标视图添加到容器中,强制进行布局传递,然后获取框架。我已经尝试过使用此方法的许多变体,而无需转换坐标。 (它们在转换前后似乎始终保持不变)

我的理论

我倾向于将UIPageViewController作为复杂因素。但是我无法解开如何获得正确的坐标。

(动画中的)目标视图不是内容视图,而是PageVC视图,而后者又可能已经或可能未添加内容视图,将其调整为导航项或工具栏。

内容VC上的viewWillAppear似乎没有正确的坐标。我可以说,在此之后,以及在所有动画委派任务都轮到了之后,详细内容视图正在调用viewWillLayoutSubviews。

这是我的主要视图的颜色叠加。灰色是安全区域之外的顶部和底部区域。蓝色是过渡动画的位置,然后才显示应设置动画的绿色基础实际位置。

0 个答案:

没有答案