我以编程方式设置了一个视图控制器,并在其中设置了一个子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
,但它是一个笨拙的旋转动画,而且我滑动到的下一页也无法正确地调整大小。
为什么页面视图控制器没有调整其子视图控制器的大小,我该如何做到这一点?
谢谢!