6

我正在制作以下视图控制器(VC)结构。

[UINavigationViewController] -> [UIPageViewController] -> [UIViewControllers]

那么,这个VC应该支持纵向和横向。

我遇到的一个问题是在改变任何方向的方向时提出的。

在此处输入图像描述

你可以看到问题。 在此处输入图像描述

红色区域是 UIPageViewController 上子 VC 的背景颜色。
蓝色区域是 UIPageViewController 的背景颜色。

我猜子 VC 没有被 UIPageViewController 重新布局。我已经想通了很长时间。我最终找到了一种解决方法,将以下覆盖函数添加到自定义UIPageViewController。

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
    [self setViewControllers:self.viewControllers
                   direction:UIPageViewControllerNavigationDirectionForward
                    animated:NO
                  completion:NULL];
}

尽管一旦完成旋转就会显示向下移动视图。这段代码大致解决了这个问题。

无论如何,我真的很想知道任何好的和自然的解决方案。

更新
我的应用在 iOS6 上运行良好。可能是iOS7的错误?

4

1 回答 1

10

我已经解决了这个问题,将以下单行代码放在自定义 UIPageViewController 的 [viewDidLoaded] 中。

self.automaticallyAdjustsScrollViewInsets = NO;

我认为 UIPageViewController 有一个滚动视图,如果它嵌入在 UINavigationController 中,它会因为改变方向而布局不正确。

幸运的是,我的解决方案适合这个问题。

@MirkoCatalano 感谢您的评论。这些对于找到正确的解决方案非常有帮助。

于 2013-11-04T16:52:05.417 回答