我已将UIPageViewController添加到我的应用程序中,以充当该应用程序的手册。当用户将其弹出时,它将以纵向显示一页,以横向显示两页,中间居中。由于我大约有100页,因此在其上方有一个同级视图UICollectionView页面选择器视图,可以快速跳转到页面。 UIPageViewController和UICollectionView都位于包含两者的后视图上。

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

当我创建内容视图时,它们的大小都达到了我想要的大小,但是由于某种原因,它们似乎已由UIPageViewController的某些组件进行了转换,因此我无法理解为什么它仅执行两个维度之一,以及为什么总是如此“短边”就是问题所在。

这是使我感到有些坚果的那种问题之一,关于如果不是一些琐碎的错误配置我该如何调试的任何想法?

最佳答案

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

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

  pageViewController.view.frame = newFrame;


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

关于ios - UIPageViewController旋转怪异,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16028841/

10-12 14:16
查看更多