UIPageViewController旋转怪异

时间:2013-04-16 04:32:56

标签: ios uipageviewcontroller

我在我的应用程序中添加了一个UIPageViewController,作为应用程序的手册。当用户弹出它时,它会显示一个纵向页面和两个横向显示中间脊柱的页面。由于我有大约100页,因此在它上面有一个兄弟视图UICollectionView页面选择器视图,以允许快速跳转到页面。 UIPageViewController和UICollectionView都位于包含它们的后备视图中。

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

当我创建我的内容视图时,它们都是我想要的大小,但由于某种原因,它们似乎被UIPageViewController的某个组件转换,我不理解它为什么只做两个维度之一以及为什么它问题始终是“短边”。

这是让我觉得有点疯狂的问题之一,如果不是一些微不足道的错误配置,我会如何调试它?

1 个答案:

答案 0 :(得分:1)

经过长时间的调试后我终于找到了它。关键提示是在纵向到横向的旋转之前,看到脊柱被设置为视图宽度的正确中间。解决方案是在willAnimateRotationToInterfaceOrientation中给定方向的情况下将视图的帧重置为新的大小。

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

  pageViewController.view.frame = newFrame;

当页面旋转时,保持内容页面的视图将移动到正确的大小,并且正确放置书脊并且内容填充给定区域。我想我遇到了这个问题,因为视图的复杂性要求我接管这么多默认值,但是这个默认值是悬挂的。