Ios UIPageViewController旋转古怪

Ios UIPageViewController旋转古怪,ios,uipageviewcontroller,Ios,Uipageviewcontroller,我已将UIPageViewController添加到我的应用程序中,作为应用程序的手册。当用户弹出它,它显示了一个页面的肖像和两个在景观与脊柱在中间。因为我有大约100个页面,所以它上面有一个同级视图UICollectionView页面选择器视图,允许快速跳转到页面。UIPageViewController和UICollectionView都位于包含它们的备份视图上 UIPageViewController的问题是,当视图第一次旋转时,它们似乎将自己约束到原始布局的短尺寸。因此,如果它第一次出现

我已将UIPageViewController添加到我的应用程序中,作为应用程序的手册。当用户弹出它,它显示了一个页面的肖像和两个在景观与脊柱在中间。因为我有大约100个页面,所以它上面有一个同级视图UICollectionView页面选择器视图,允许快速跳转到页面。UIPageViewController和UICollectionView都位于包含它们的备份视图上

UIPageViewController的问题是,当视图第一次旋转时,它们似乎将自己约束到原始布局的短尺寸。因此,如果它第一次出现在纵向中,那么当旋转到横向时,两页的宽度与旧的纵向宽度相同。同样,如果它第一次以两页横向显示,则旋转到纵向具有正确的宽度,但高度是初始横向高度的高度。这在任何设备上都是一致的

当我创建内容视图时,它们都是我想要的大小,但出于某种原因,它们似乎被UIPageViewController的某个组件所转换,我不明白为什么它只做两个维度中的一个,为什么总是“短边”才是问题所在


这是一个让我觉得有点疯狂的问题,如果不是一些小的错误配置,我该如何调试它呢?

经过长时间的调试,我终于找到了它。关键提示是,在从纵向旋转到横向之前,脊椎已设置为视图宽度的正确中间位置。解决方案是根据WillAnimateRotationInterfaceOrientation中的方向将视图的帧重置为新的大小

在调用使用传递到方法中的持续时间的动画块之前,我计算新的大小,然后在块内我有:

  pageViewController.view.frame = newFrame;

旋转页面时,包含内容页面的视图将移动到正确的大小,脊椎正确放置,内容填充给定区域。我想我遇到了这个问题,因为视图的复杂性要求我接管这么多默认设置,但这一个被挂起了。

我已经花了一些时间来处理应用程序的其他部分,现在才回到这个问题上。重新查看我的内容的loadView,大小只设置了一次。似乎UIPageViewController正在缓冲它接收的内容视图的第一个大小,并根据旋转按比例调整内容。这里仍然有一些奇怪的事情,我还没有理解。我将尝试在每次内容更改时强制更改内容的大小,看看这是否解决了主要问题。你从哪里获得的
newFrame
?已经快三年了,我不再考虑代码,也找不到它。我相信它要么被传递给了方法,要么我根据设备的大小进行了计算。我不再这样做了,因为我们现在有了自动布局和一个约束系统,允许我们避免许多此类问题。