在pageViewController:viewControllerAfterViewController:方法中,就在return语句之前,即将作为下一页返回的视图具有正确的视图帧大小。
然而,在pageViewController:didFinishAnimating:previousViewControllers:transitionCompleted:方法之后立即调用,我检查新引入的视图控制器的帧大小([pageViewController2.viewControllers objectAtIndex:0];)并且我发现它已调整大小。
请注意,我为新创建的ViewController设置了[self.pageViewController.view setAutoresizesSubviews:NO]和自动调整遮罩为None。
调整新ViewController的步骤有哪些想法?
答案 0 :(得分:4)
我认为问题本质上与UIPageViewController的性质有关。它是从UIScrollView构建的。我并不完全知道为什么会出现奇怪的调整大小行为,但是当组成页面的视图控制器使用自动布局时,它似乎特别明显。看起来,将页面视图控制器中的约束锁定到超级视图会使元素在转换后调整大小,因为超级视图本身在转换后会调整大小。
这很糟糕,因为Apple基本上推动我们所有人采用自动布局。自动布局很棒,我建议大家从现在开始使用它,但是当你使用它与UIPageViewController时真的很糟糕。他们真的应该废弃这个类,或者为开发人员构建更容易的东西,这些东西可以直接拖到故事板中。
需要考虑的一些事项。
1。)不要将任何东西锁定在"顶部布局指南"或者"底部布局指南"。还要确保你有"限制边距"禁止任何用于拥抱屏幕两侧的视图。
2。)如果您在单个页面/内容视图控制器中使用标签,请确保将其绑定/约束到超级视图以外的其他内容。我想在UIImageView上放置一个标签,所以我将标签对齐到图像视图的前沿和上边缘(仅使用AutoLayout约束),创建一个偏移量,为标签赋予一些边距。
3。)以下将是一个很好的教程。但是,它有点过时了。我下载了项目并基本上对其进行了修改以获得可行的UIPageViewController实现。这个项目唯一的问题是它没有使用AutoLayout。我目前正在写一篇博文,更清楚地讨论了如何一起使用UIPageViewController和Autolayout。
http://www.appcoda.com/uipageviewcontroller-storyboard-tutorial/