У меня есть контроллер просмотра, программный программный, у которого есть ребенок UIPageViewController
. Это отображает различные другие контроллеры представлений, которые также настроены программно. Эти представления диспетчеров вида имеют translatesAutoresizingMaskIntoConstraints
, установленный в YES
, но в представлении контроллера просмотра страницы используются ограничения, чтобы позиционировать себя в контроллере верхнего уровня.UIPageViewController, не изменяя размер его дочерних контроллеров просмотров
Проблема заключается в том, что пользователь поворачивает устройство, контроллер просмотра страниц изменяет размер его рамки, но его дочерние контроллеры просмотра этого не делают. К 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
но это неуклюжая анимация вращения и на следующей странице, что я пролистывания также не изменяется должным образом.
Почему контроллер просмотра страниц не изменяет размер своих дочерних контроллеров, и как я могу это сделать?
Спасибо!
Вы нашли решение по вашей проблеме? Я застрял с той же проблемой. – AlexR
Проблема в том, что -didRotateFromInterfaceOrientation на дочерних контроллерах никогда не вызывается. Я решил это, вручную вызвав его из родительских контроллеров представления -didRotateFromInterfaceOrientation. –
Какой метод на контроллере просмотра clild вы вызываете для обработки изменения ориентации? – Satyam