У меня есть контроллер просмотра, программно программируемый, у которого есть дочерний 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
, но это неуклюжая анимация вращения, и следующая страница, которую я прокручиваю, тоже не изменена.
Почему контроллер просмотра страниц не изменяет размеры своих дочерних контроллеров представления и как мне его заставить?
Спасибо!