Ho un controller di visualizzazione impostato a livello di programmazione che ha un figlio UIPageViewController
. Questo visualizza vari altri controller di visualizzazione che sono anche impostati a livello di programmazione. Le viste di queste view controller sono impostate su translatesAutoresizingMaskIntoConstraints
impostato su YES
, ma la vista del controller di visualizzazione di pagina utilizza i vincoli per posizionarsi nel controller di visualizzazione superiore.UIPageViewController non ridimensiona i suoi controller di visualizzazione figlio
Il problema è che quando l'utente ruota il dispositivo, il controller della visualizzazione di pagina ridimensiona il suo frame ma i suoi controller di vista figlio no. Con didRotateFromInterfaceOrientation
, la cornice è ancora dal vecchio orientamento. Ho verificato che i metodi di rotazione sono richiamati sui controller di visualizzazione figlio, ma la loro cornice non cambia.
Mi è stata controller della vista pagina come questa:
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];
Ho provato a chiamare setNeedsLayout
ma è un'animazione di rotazione goffo e la pagina successiva che Swipe per non anche ridimensionata correttamente.
Perché il controller della visualizzazione di pagina non ridimensiona i suoi controller di visualizzazione figlio e come posso farlo?
Grazie!
Hai trovato una soluzione al tuo problema? Sono bloccato con lo stesso problema. – AlexR
Il problema è che -didRotateFromInterfaceOrientation sui controller figlio non viene mai chiamato. L'ho risolto manualmente chiamandolo dai controller della vista genitore -didRotateFromInterfaceOrientation. –
Qual è il metodo su Clild View Controller stai chiamando per gestire la modifica dell'orientamento? – Satyam