【发布时间】:2013-07-20 02:32:02
【问题描述】:
我有一个以编程方式设置的视图控制器,它有一个子 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,但这是一个笨拙的旋转动画,而且我滑动到的下一页也没有正确调整大小。
为什么页面视图控制器不调整其子视图控制器的大小,我该如何让它这样做?
谢谢!
【问题讨论】:
-
您找到解决问题的方法了吗?我被同样的问题困住了。
-
问题是子控制器上的 -didRotateFromInterfaceOrientation 永远不会被调用。我通过从父视图控制器 -didRotateFromInterfaceOrientation 手动调用它来解决它。
-
您调用 clild 视图控制器上的什么方法来处理方向变化?
-
我有同样的问题,但不是旋转,它是多任务视图。如果您找到任何解决方案,请分享它
标签: ios constraints autolayout uipageviewcontroller autorotate