0

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

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

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

这是让我感觉有点疯狂的问题之一,如果不是一些琐碎的错误配置,我有什么想法可以调试它吗?

4

1 回答 1

1

经过长时间的调试,终于找到了。关键提示是在从纵向到横向旋转之前,将脊椎设置为视图宽度的正确中间值。解决方案是将视图的框架重置为在 willAnimateRotationToInterfaceOrientation 中给定方向的新大小。

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

  pageViewController.view.frame = newFrame;

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

于 2013-05-02T04:17:07.920 回答