我有一个以编程方式设置的视图控制器,它有一个 child UIPageViewController
。这将显示各种其他也以编程方式设置的视图控制器。这些视图控制器的视图已translatesAutoresizingMaskIntoConstraints
设置为YES
,但页面视图控制器的视图使用约束将自身定位在顶部视图控制器中。
问题是,当用户旋转设备时,页面视图控制器会调整其框架的大小,但其子视图控制器不会。通过didRotateFromInterfaceOrientation
,它的框架仍然来自旧的方向。我已经验证在子视图控制器上调用了旋转方法,它们的框架没有改变。
我这样设置页面视图控制器:
self.pageViewController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:nil];
self.pageViewController.view.backgroundColor = [UIColor clearColor];
self.pageViewController.view.translatesAutoresizingMaskIntoConstraints = NO;
self.pageViewController.dataSource = self;
self.pageViewController.delegate = self;
[self.pageViewController willMoveToParentViewController:self];
[self.view addSubview:self.pageViewController.view];
[self addChildViewController:self.pageViewController];
[self.pageViewController didMoveToParentViewController:self];
self.currentPageIndex = 0;
self.currentPageController = [self pageForIndex:self.currentPageIndex];
self.currentPageController.delegate = self;
[self.pageViewController setViewControllers:@[self.currentPageController] direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:NULL];
我试过打电话setNeedsLayout
,但这是一个笨拙的旋转动画,我刷到的下一页也没有正确调整大小。
为什么页面视图控制器不调整其子视图控制器的大小,我该如何让它做到这一点?
谢谢!