Ios 为什么在翻页后UIPageViewController会调整其UIViewController视图的大小?

Ios 为什么在翻页后UIPageViewController会调整其UIViewController视图的大小?,ios,ipad,ios5,uiviewcontroller,uipageviewcontroller,Ios,Ipad,Ios5,Uiviewcontroller,Uipageviewcontroller,在pageViewController:viewControllerAfterViewController:method中,就在return语句之前,即将作为下一页返回的视图具有正确的图幅大小 但是,在调用pageViewController:didFinishAnimating:PreviousViewController:transitionCompleted:方法之后,我立即检查了新引入的视图控制器的帧大小([pageViewController2.ViewControllerObject

在pageViewController:viewControllerAfterViewController:method中,就在return语句之前,即将作为下一页返回的视图具有正确的图幅大小

但是,在调用pageViewController:didFinishAnimating:PreviousViewController:transitionCompleted:方法之后,我立即检查了新引入的视图控制器的帧大小([pageViewController2.ViewControllerObjectatindex:0];)并发现其大小已调整

请注意,对于新创建的ViewController,我已将[self.pageViewController.view setAutoresizesSubviews:NO]和自动调整大小掩码设置为“无”


你知道新的ViewController在哪一步进行了调整吗?

我认为问题本质上与UIPageViewController的性质有关。它是从UIScrollView构建的。我不知道为什么会有奇怪的调整大小行为,但当组成页面的视图控制器使用自动布局时,这种行为似乎特别明显。似乎,将页面视图控制器中的约束锁定到superview会使元素在转换后调整大小,因为superview本身在所述转换后会调整大小

这很糟糕,因为苹果基本上在推动我们所有人采用自动布局。Auto layout非常棒,我建议大家从现在开始使用它,但是当你将它与UIPageViewController一起使用时,它真的很糟糕。他们真的应该要么放弃这个类,要么为开发人员构建一些更简单的东西,这些东西可以直接拖入故事板

有些事情需要考虑。

1.)不要将任何内容锁定到“顶部布局指南”或“底部布局指南”。此外,还应确保在任何要紧贴屏幕两侧的视图上禁用了“约束到边距”

2.)如果在单个页面/内容视图控制器中使用标签,请确保将其绑定/约束到superview以外的其他对象。我想在UIImageView上放置一个标签,因此我将标签与图像视图的前缘和顶边对齐(仅使用自动布局约束),创建一个偏移以给标签一些边距

3.)否则,以下将是一个很好的教程。然而,它有点过时了。我下载了该项目,并对其进行了基本修改,以获得一个运行正常的UIPageViewController实现。这个项目唯一的问题是它没有使用自动布局。我目前正在写一篇博文,更清楚地讨论如何将UIPageViewController和Autolayout结合使用